我有一个Angular2服务,如下所示。我正在尝试将此用作多个组件之间的共享服务。如果很重要,组件将直接绑定到public books
和selectedBook properties
我想缓存图书列表和当前选定的图书在服务上,只有在第一次调用时才会调用这些图书。Angular2在数组填充之前试图获取数组中的项目
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
@Injectable()
export class BookService {
public books: Book[];
public selectedBook: Book;
constructor(private http: Http,
private router: Router) {
this.http.get('/api/book/list')
.subscribe(result => this.books = result.json() as Book[]);
}
public getBooks() {
return this.books;
}
public setSelectedBook(id) {
this.selectedBook = this.books.filter(x => x.id == id)[0];
}
}
的问题是,有时我试图读取数组或致电setSelecteBook(id)
前阵实际上是稀少,这会导致系统崩溃。我一直在试图找到一个如何使用Observables的例子,但我无法找到足够接近我的方案来弄清楚如何适应它来解决我的问题。
您需要在构造函数中初始化'books':'this.books = []' –
这只会延迟过去这一点的崩溃。我需要一些东西来等待books数组完成填充,然后设置选定的书籍。 –