簡體   English   中英

如何使用異步管道值處理`ngIf`?

[英]How to handle `ngIf` with async pipe values?

我正在嘗試使用async管道實現ngIf 但不行。 有人幫我嗎?

這是我的HTML:

<div class="response-container">
    xx {{response | async | json }}
    <div class="failed-error" *ngIf="(response.responseFail | async )">
        {{response.message}}
    </div>
    <div class="success-msg" *ngIf="(response.responseSucc | async) === 'true' ">
        {{response.message}}
    </div>
</div>

在上面的xx {{response | async | json }} xx {{response | async | json }} xx {{response | async | json }}它打印為:

xx { "responseFail": false, "responseSucc": true, "message": "success" }

但為什么這不適用於*ngIf條件?

response是數據源,而response.responseFail不是一個。 嘗試這個:

*ngIf="(response | async )?.responseFail"

*ngIf="(response | async)?.responseSucc  === 'true' "

你必須在異步管道=>之后訪問該對象

*ngIf="(response | async )?.responseFail"

ex =>

https://stackblitz.com/edit/angular-tvmqzm

編輯:ethan先來到這里。

除了以前的答案,你不應該在同一個observable上多次使用異步管道。

更好地做到這一點:(用$命名observabkes是最佳做法)

<div *ngIf="response$ | async as response" class="response-container">
    xx {{response | json }}
    <div class="failed-error" *ngIf="response.responseFail">
        {{response.message}}
    </div>
    <div class="success-msg" *ngIf="response.responseSucc">
        {{response.message}}
    </div>
</div>

由於這些div只在課堂上有所不同,你應該考慮使用ng-class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM