2017-02-21 37 views
4

是否可以像这样在Angular中绑定Observable<enum>如何将ngclass绑定到可观察值

<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 }" 

更新 原来,这是遗留代码调用角度分量做。这些调用需要的ngZone的环境下运行,否则就没有骑自行车

+0

当然,这应该工作?什么是“MapMode.Pan”? –

+0

如果这不起作用,也许尝试将其更改为'Oberservable '并在组件代码中的'.map()'中执行'==='? –

+1

如果你可以做'this.mapToolBarMode.subscribe',那么你的绑定可能应该是''(不含'$') –

回答