Angular 如何将ngclass绑定到可观察值

Angular 如何将ngclass绑定到可观察值,angular,rxjs,observable,Angular,Rxjs,Observable,绑定到一个可观察的在角度上是否可能像这样 <a [ngClass]="{selected: (mapToolBarMode$ | async) === 0 }" /> 更新 原来这与调用角度组件的遗留代码有关。这些调用需要在ngZone的上下文中运行,否则就没有循环可能您在问题中遗漏了一个细节,在我的示例中,它工作正常: 或者您的可观察对象已完成?可能是Http请求 @组件({ 选择器:“我的应用程序”, 模板:` 你好{{name}},单击以切换颜色 `, 风格:[ “.所选{

绑定到一个
可观察的
在角度上是否可能像这样

<a [ngClass]="{selected: (mapToolBarMode$ | async) === 0 }" />

更新
原来这与调用角度组件的遗留代码有关。这些调用需要在ngZone的上下文中运行,否则就没有循环

可能您在问题中遗漏了一个细节,在我的示例中,它工作正常:

或者您的可观察对象已完成
?可能是Http请求

@组件({
选择器:“我的应用程序”,
模板:`
你好{{name}},单击以切换颜色
`,
风格:[
“.所选{颜色:红色;}”
]
})
导出类应用程序{
名称:字符串;
mapToolBarMode$=新主题();
构造函数(){
this.name='Angular2'
}
私有_curState=1;
切换(){
如果(++this.\u curState>1)this.\u curState=0;
this.mapToolBarMode$.next(this.\u curState);
}
}

现场演示:

当然可以,应该可以吗?什么是
MapMode.Pan
?如果这不起作用,可以尝试将其更改为
Oberservable
,并在组件代码中的
.map()
中执行
==
?如果可以执行
此.mapmoolbarmode.subscribe
,那么您的绑定可能应该是
(没有
$
)“值在构造函数中不可用”。异步请求中的值在构造函数中肯定不可用,这就是异步的本质。
<a [ngClass]="{selected: (mapToolBarMode$ | async) === MapMode.Pan }" />
private mapModes: typeof MapMode = MapMode;
private isPanSelected = true;
ngOnInit() {
    this.mapToolBarMode.subscribe(v => {
        this.isPanSelected = (v === this.mapModes.Pan);
    })
}
[ngClass]="{selected: isPanSelected }"