我試圖從其餘數據服務調用中設置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