我有兩個帶有不同路由器鏈接的按鈕。每個都應該根據 ngIf 的結果顯示不同。但是,發生的情況是,在第一次加載頁面時,這些按鈕都不會加載,直到頁面重繪 (盡管已加載頁面 - 等待資料加載):
<ng-container *ngIf="moduleList">
...
<button *ngIf="!item.TrainingModuleCompleted" mat-stroked-button [routerLink]="['training-modules-content-view', item.TrainingModuleId]" class="module-view">Select</button>
<button *ngIf="item.TrainingModuleCompleted" mat-stroked-button [routerLink]="['training-modules-content-view', item.TrainingModuleId]" class="module-view">View</button>
...
</ng-container>
如上所示,根據是否item.TrainingModuleCompleted為真,將顯示不同的按鈕。此變數加載了moduleList.
這是加載之前的按鈕(初始加載時):

這是加載后的按鈕(重繪 頁面后):

ngIf 顯然在加載資料之前就被命中了.. 有解決方法嗎?
uj5u.com熱心網友回復:
我猜如果您查看控制臺,您會在初始加載期間看到錯誤。item頁面加載時是否可能為空或未定義?如果是這樣,您應該像這樣對專案添加空檢查。
*ngIf="item?.TrainingModuleCompleted"
另外,如果你換出的只是按鈕文本,我會這樣做而不是有兩個按鈕......
{{ item?.TrainingModuleCompleted ? 'View' : 'Select' }}
uj5u.com熱心網友回復:
如果您在“訂閱”后加載資料,您可以這樣做:
dataWS.subscribe(
(data) => {
//Called when success
},
(error) => {
//Called when error
}
).add(() => {
//load the variable you want after
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/320973.html
標籤:html 有角的 打字稿 angular-ng-if
