Angular 2 Observable 的测试值给出 CSS class

Test value of Angular 2 Observable for giving CSS class

我可以在 html 中使用 {status_async | async} 显示 Observable 产生的值。

但是,我如何测试这个 Observable 是否等于某物?

具体来说,我想用它来分配一个 class:

<div [ngClass]="{'has-danger': status_async == 'created before'}">
    <input type="text">
</div>

我发现我可以使用:

<div [ngClass]="{'has-danger': (status_async | async) == 'created before'}">

但是问题变成了我使用了两次异步(在这里和显示值)。

当我检查成功创建的状态时,具有讽刺意味的是,在第二次异步之后,值变为 'created before',即使我只单击了一次创建按钮。

我该如何解决这个问题?

在同一个可观察对象上使用多个异步管道时需要小心,因为这意味着现在有多个订阅者(订阅方法被调用多次,每次使用异步管道一个)。

对于从 HTTP 调用创建的 observable,如果订阅两次,相应的请求将被调用两次)...默认情况下,此类 observable 是冷的(它们无法共享)。

您需要使用 share 方法使您的 observable 变热:

this.status_async = this.status_async.share();