我受到了rxjs的启发,所以我的地址已成为一个行为主题:
address = new BehaviorSubject<Address>(null);
在用户在地图上选择地址之前,它会被初始化为null。在模板中,我需要显示地址属性:address.addressLine
或消息pick address on the map
。
所以我写道:
{{(address | async) ? (address | async).addressLine : 'pick address on the map'}}
我该怎么办?选项:
答案 0 :(得分:0)
您可以执行以下操作,从该observable创建局部变量,并使用它:
address$ = new BehaviorSubject<Address>(null);
<ng-container *ngIf="(address$ | async) || {} as address">
{{ address.addressLine || 'pick address on the map' }}
</ng-container>
这样webstorm就不会抱怨。另外,你这样做的方式是我认为不必订阅两次(这对性能不利)。
(address$ | async) || {}
表达式已存在,因此我们始终已address
已解决,即使其null
已解决。您还可以使用else
功能,并在新的<ng-template>
或其他元素中显示占位符消息。
这是最新的角度4.4,不确定以前的版本(语法已更改)。
答案 1 :(得分:0)
这是IDEA中的已知问题,请关注WEB-27164了解更新