我是Angular 2和Observables的新手,但是当我收到一个流时,我还没有找到一种“监听”订阅更改的方法,我甚至不知道这是否可行或是否是正确的方式。
这就是我以前对承诺所做的事情:
// Constructor and more code
// ...
ngOnInit(): void {
this.loading.present();
this.getItems()
.then(() => this.loading.dismiss());
}
getItems(): Promise {
return this.itemService
.getItems()
.then(items => this.items = items);
}
refresh(refresher): void {
this.getItems()
.then(() => refresher.complete());
}
我已经尝试了订阅/观察,但我不知道如何:
// Constructor and more code
// ...
ngOnInit(): void {
this.loading.present();
this.getItems()
.subscribe(() => this.loading.dismiss());
}
getItems(): Subscription {
return this.itemService
.getItems()
.subscribe(items => this.items = items);
}
refresh(refresher): void {
this.getItems()
.subscribe(() => refresher.complete());
}
当然,我收到编译错误:Property 'subscribe' does not exist on type 'Subscription'
,有关如何使用Observables(RxJS)实现此目的的任何帮助吗?
答案 0 :(得分:3)
Subscription
是一个听众,你不能听一个听众,对吗?
相反,您需要返回Observable
才能订阅。将您的功能更改为以下(未测试):
getItems(): Observable<any> {
let obs = this.itemService.getItems().share();
obs.subscribe(items => this.items = items);
return obs;
}