我试图从其余数据服务调用中设置2个变量,这会在元素“_embedded”和“page”中返回JSON文档中的结果。Angular 2 Observable
我想在一个组件中有2个变量,观察服务中设置的2个变量。我正在经历的是1个观察者被定义并包含结果,另一个观察者因为某种原因在服务中“未定义”而没有定义。
错误是,_pageObservier未定义,当我尝试执行此语句this._pageObserver.next(this._page);
任何洞察力赞赏...
这里是服务中的代码。
@Injectable()
export class ProductService {
products$: Observable<Product[]>;
pager$: Observable<{}>;
private _baseUrl: string;
private _pageObserver: Observer<{}>;
private _productObserver: Observer<Product[]>;
private _page:{};
private _dataStore: { products: Product[] };
constructor(private _http: Http) {
this._baseUrl = 'http://localhost:8000/products';
this.products$ = new Observable(observer => this._productObserver = observer).share();
this.pager$ = new Observable(observer => this._pageObserver = observer).share();
this._dataStore = { products: [] };
this._page = {};
}
load() {
//this._http.get(`${this._baseUrl}/product`).map(response => response.json()).subscribe(data => {
this._http.get(`http://localhost:8000/products`).map(response => response.json()).subscribe(data => {
this._dataStore.products = data['_embedded'].products;
this._productObserver.next(this._dataStore.products);
this._page = data['page'];
this._pageObserver.next(this._page); <=== THIS IS NOT DEFINED
}, error => console.log('Could not load products.'));
}
我认为你需要在你的构造函数初始化_pageObserver。编辑 - 什么是呼叫传呼机,将导致它初始化? – Sam
我相信这是在构造函数中的第三条语句中完成的... – Don
我并不熟悉Observable,但我相信直到pager $实际上会观察它不会触发并初始化_pageObserver。 – Sam