我们一直在try 将两个观测值合并为一个*ngIf
,并在两者都发出时显示用户界面.
拿:
<div *ngIf="{ language: language$ | async, user: user$ | async } as userLanguage">
<b>{{userLanguage.language}}</b> and <b>{{userLanguage.user}}</b>
</div>
起始:Putting two async subscriptions in one Angular *ngIf statement
就编译而言,这是可行的,但是在我的例子中,language$
和user$
来自两个HTTP请求,而且user$
似乎抛出了TypeError: _v.context.ngIf.user is undefined
这样的运行时错误.
基本上,我真正想要的是(这行不通):
<div *ngIf="language$ | async as language && user$ | async as user">
<b>{{language}}</b> and <b>{{user}}</b>
</div>
这是最好的解决方案:
- 在组件内部订阅并写入变量
- 将组件内部的两个观察值与
withLatestFrom
结合起来 - 添加空判断
{{userLanguage?.user}}