Следуя этому курсу https://www.pluralsight.com/courses/angular-2-getting-started и материалы github product.service в этом курсе пытается избежать вызова запроса http.get() каждый раз, когда я нажимаю на ссылку. Я думаю, что каждый раз загружать файл вместо того, чтобы сохранять его как объект в памяти, - большая трата времени.
Пытаюсь заменить этот код:
getProducts(): Observable<IProduct[]> {
return this._http.get(this._productUrl)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
с этим:
public _observable: Observable<IProduct[]>;
getProducts(): Observable<IProduct[]> {
console.log('_observable before: ' + (this._observable));
if(this._observable===undefined){
console.log('_observable inside 1: ' + (this._observable));
this._observable=this._http.get(this._productUrl)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log('All inside observable: ' + JSON.stringify(data)))
.catch(this.handleError);
console.log('_observable inside 2: ' + (this._observable));
}
console.log('_observable after: ' + (this._observable));
return this._observable;
}
эта строка никогда не должна вызываться, если this._observable
подчеркнуто this._observable=this._http.get(this._productUrl)
НО ЭТО НАЗЫВАЕТ!!!!
В хромированной консоли:
_observable before: [object Object]
product.service.ts:25 _observable after: [object Object]
product.service.ts:20 All inside observable:...
Последняя строка не должна появляться!