为什么AsyncPipe在{{}}和* ngIf中的评估方式不同

时间:2016-09-16 07:09:44

标签: angular typescript

<div *ngIf="!!(result$ | async)">
    {{!!(result$ | async)}}
</div>

我希望它为空,然后显示true。令人惊讶的是,它会显示false,然后显示true{{}}*ngIf是否有不同的评估机制? result$的类型为Observable<{ products: any[] }>

constructor() {
    this.result$ = Observable.of("Dummy!").delay(3000);
}

Angular2发布版

1 个答案:

答案 0 :(得分:1)

实际原因是result$中的可观察性很冷,每次被调用时都会重新运行。我的标记中有两个result$ | async调用。我要么需要创建一个实际变量来存储订阅值,要么将share运算符添加到observable以防止重新运行。

issue on github的解决方法。