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

Las*_*ion 5 rxjs angular

我有一个我想要应用某个类的元素,所以我使用了一个正在观察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)}">

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

谢谢!

Ale*_*nov 1

不能确定,但​​只是一些你可以检查的想法:

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

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

这样,角度将看到您的更改,否则它无法看到。您可以在这里阅读有关区域的更多信息:另一个链接