html - 使用 ngIf 显示时,某些 HTML 元素未显示?
问题描述
我有两个带有不同路由器链接的按钮。根据 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 显然在加载数据之前就被击中了。有解决方法吗?
解决方案
如果您在“订阅”后加载数据,您可以这样做:
dataWS.subscribe(
(data) => {
//Called when success
},
(error) => {
//Called when error
}
).add(() => {
//load the variable you want after
});
推荐阅读
- python - 计算大小时numpy数组中的索引太多
- javascript - 保存数据的多个变量 - 哪个具有最高值?
- mysql - 尽管使用外键约束,低索引基数和有太多其他索引是否需要从表中删除索引?
- python - 在循环中获取数据的问题(Scrapy)
- javascript - 在角度js中动态构造具有键和值作为列表的对象
- php - 在 div 类中自动插入图像
- angular - ngOnInit 在 Angular 的组件内初始化 EventEmitter 变量是否太晚了?
- bash - 在循环中拆分字符串
- json - AppSettings 反序列化为未知或动态类
- reactjs - Matrial UI 更改轮廓选择的边框