"使用按位运算符"或者在Angular模板中可观察到

时间:2017-10-22 22:17:31

标签: angular intellij-idea rxjs observable

我受到了rxjs的启发,所以我的地址已成为一个行为主题:

address = new BehaviorSubject<Address>(null);

在用户在地图上选择地址之前,它会被初始化为null。在模板中,我需要显示地址属性:address.addressLine或消息pick address on the map

所以我写道:

{{(address | async) ? (address | async).addressLine : 'pick address on the map'}}

这很好用,但IDEA认为我使用的是bitwise orenter image description here

我该怎么办?选项:

  1. 忽略警告
  2. 忽略警告并为IDEA创建问题
  3. 以某种方式更改我的代码

2 个答案:

答案 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了解更新