我有一个Angular2服务如下。我正在尝试将其用作多个组件之间的共享服务。如果重要,组件直接绑定到public books
,selectedBook properties
我想在服务上缓存书籍列表和当前选择的书籍,并且只在第一次调用时调用填充这些。
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 的示例,但我找不到足够接近我的场景来弄清楚如何调整它来解决我的问题。