在Angular中,是否可以像这样绑定到一个
Observable<enum>
?<a [ngClass]="{selected: (mapToolBarMode$ | async) === 0 }" />
或者
<a [ngClass]="{selected: (mapToolBarMode$ | async) === MapMode.Pan }" />
其中mapToolBarMode$
是可观察对象。
当可观察对象发生变化时,它似乎没有任何作用。
我认为这可能与构造函数中的值不可用有关。如果我这样做,它可以工作,但我不想为MapMode枚举中的每个值都这样做:
private mapModes: typeof MapMode = MapMode;
private isPanSelected = true;
ngOnInit() {
this.mapToolBarMode.subscribe(v => {
this.isPanSelected = (v === this.mapModes.Pan);
})
}
...
[ngClass]="{selected: isPanSelected }"
更新 原来这是由于遗留代码调用了Angular组件。这些调用需要在ngZone的上下文中运行,否则就没有循环。
MapMode.Pan
是什么? - Günter ZöchbauerOberservable<boolean>
并在组件代码中使用.map()
进行===
? - Fredrik Lundinthis.mapToolBarMode.subscribe
,那么你的绑定应该是<a [ngClass]="{selected: (mapToolBarMode | async) === 0 }" />
(没有$
)。 - Günter Zöchbauer