【发布时间】:2020-11-13 17:27:01
【问题描述】:
我在我的 Angular/Ionic 应用程序的几个不同组件中成功订阅了 observable。但是,因为我是手动执行的,这也意味着我需要手动取消订阅它们,我目前在 ngOnDestroy() 生命周期挂钩中执行此操作。
我拥有的正在运行的组件代码实现如下所示:
getPlayerStats() {
this.playerSubscription = this.mainService.getPlayerStats(this.username).subscribe(
user => {
this.user = user;
},
error => this.errorMsg = error
);
}
我的组件视图代码如下所示:
<ion-card *ngIf="user">
... display user info
</ion-card>
而这里调用的服务方法是这样的:
getPlayerStats(username: string) {
const req = `users/stats/${username}`;
return this.apiService.sendRequest(req);
}
我想做的,但很难开始工作,是使用async 管道在我的 HTML 视图中订阅。那会更干净,因为这样我就不必那么冗长,也不必在我使用它的组件中手动订阅和取消订阅。我的理解是,这也是处理这些场景的推荐方式,正是出于这些原因。
该代码会是什么样子?我试过了,但没有用:
getPlayerStatus() {
this.user = this.mainService.getPlayerStats(this.username);
}
在我的 HTML 视图中,我这样做了:
<ion-card *ngIf="user | async">
... display user info
</ion-card>
但正如我所说,这是行不通的。我需要在这里改变什么?如何调用服务getPlayerStats() 方法,但使用异步管道处理组件视图中的订阅?
【问题讨论】:
标签: angular asynchronous ionic-framework rxjs-observables