【发布时间】:2020-05-07 19:19:06
【问题描述】:
如果底层事件流不发出新值,RxJS Observable 如何发出新值?
给定一个 Angular 组件,它使用异步 pipe 来显示用户名;
export class MyComponent implements OnInit {
public user$!: Observable<User>;
constructor(private readonly ms: MyService)
ngOnInit() {
this.user$ = this.ms.getUser();
}
}
<ng-container *ngIf="user$ | async as user; else empty">
{{ user.name }}
</ng-container>
<ng-template #empty>
No user here.
</ng-template>
...假设一段时间过去了,我想通过调用异步函数this.ms.getUser() 再次尝试获取用户,我该怎么做?
AFAIK,我不能简单地覆盖 Observable $captcha;
export class MyComponent implements OnInit {
public user$!: Observable<User>;
constructor(private readonly ms: MyService)
ngOnInit() {
this.user$ = this.ms.getUser();
}
getUserAgain() {
// Wrong. This would be a new/different Observable.
// The UI would not update.
this.user$ = this.ms.getUser();
}
}
MyService 服务返回一个 Observable,因为它只是 Angular 的 HttpClient 的一个薄包装。
【问题讨论】:
标签: angular typescript rxjs ngrx