angular - 测试 Angular 2 Observable 给出 CSS 类的值

标签 angular observable

我可以使用 {status_async | 来显示 Observable 生成的值html 中的 async}

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

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

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

我发现我可以使用:

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

但问题是我已经使用了异步两次(此处用于显示值)。

当我检查成功创建的状态时,具有讽刺意味的是,在第二次异步之后,即使我只单击一次创建按钮,值也会更改为“之前创建”。

如何解决这个问题?

最佳答案

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

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

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

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

关于angular - 测试 Angular 2 Observable 给出 CSS 类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35536773/

相关文章:

javascript - 如何多次重用一个 Angular 组件

rest - RxJs:从服务器请求列表,消耗值,当我们几乎没有值时重新请求

javascript - 将任意数量的正斜杠替换为两个正斜杠

angular - Angular 4 中的多个日期选择器并且没有 jquery

angular - 无法在 Angular Testing 用例中使用 TestBed.overrideProvider 覆盖 MAT_DIALOG_DATA 提供程序

angular - 我如何将垂直网格线连接到 ag-Grid?

javascript - 是否有机会从 RxJs 'next' 中省略 'subscribe' 部分

Angular2 observable http获取条件重复

angular - 如何设置 Observable 的默认表单值?

rxjs - 使用 .map 转换 Observable