restデータサービスコールから2つの変数を設定しようとしていますが、結果はJSONドキュメントの要素 "_embedded"と "page"に返されます。Angular 2 Observable
1つのコンポーネントに2つの変数を設定して、サービスに設定されている2つの変数を観察しようとしています。私が経験しているのは、1つのオブザーバが定義されており、結果が含まれていて、もう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
私はそれがコンストラクタの3番目のステートメントで行われていると信じています... – Don
Observablesに精通していませんが、ページャ$が実際に_pageObserverを起動して初期化しない何かを実際に観察するまでは、 – Sam