Я создал службу, которая делает простой запрос GET:
private accountObservable = null;
constructor(private _http: Http) {
}
getAccount () {
// If we have account cached, use it instead
if (this.accountObservable === null) {
this.accountObservable = this._http.get('http://localhost/api/account')
.map(res => <Account> res.json().data)
.catch(this.handleError);
}
return this.accountObservable;
}
Я добавил эту службу в мою функцию bootstrap, чтобы предоставить ее по всему миру (я надеюсь предоставить один и тот же экземпляр всем компонентам):
provide(AccountService, { useClass: AccountService })
Проблема заключается в том, что когда я вызываю эту услугу в разных компонентах, каждый раз выполняется запрос GET. Поэтому, если я добавлю его к 3 компонентам, будут выполнены 3 запроса GET, хотя я проверю, существует ли уже наблюдаемое.
ngOnInit() {
this._accountService.getAccount().subscribe(
account => this.account = account,
error => this.errorMessage = <any>error
);
}
Как я могу предотвратить создание запроса GET несколько раз?