为什么[class.someClass]和[ngClass]绑定与myObservable $ |的工作方式不同异步?

时间:2016-06-16 14:18:47

标签: angular rxjs

我有一个我想要应用某个类的元素,所以我使用了一个正在观察Observable更改的[class.active]条件。但是当我切换它时,它并不适用于以下li并打破整个应用程序:

<li *ngFor="let room of activeRooms$ | async" [class.active]="room.name === (currentRoomName$ | async)">

我发现如果我使用[ngClass]代替它,它可以完美地运作:

<li *ngFor="let room of activeRooms$ | async" [ngClass]="{ active: room.name === (currentRoomName$ | async)}">

为什么?任何人都可以对此有所了解吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

无法确定,但只是想到你可以检查的想法:

  • 将Observable更改为EventEmitter,它们的表现略有不同;您可以阅读here了解更多信息。
  • 可以在角度NgZone之外的某处生成可观察事件;在这种情况下,您需要将其注入组件并通过以下方式更新您的属性:

    zone.run(() => this.prop = newValue);

这样,角度就会看到你无法看到的变化。您可以在此处详细了解区域:another link