angular - ngFor 用于延迟数据
问题描述
我有一个组件,它接受 URL 参数、调用 API 并显示数据。最基本且典型的示例:
ngOnInit() {
this.route.params.subscribe( params => {
const id = params.id;
this.loadAssets(id);
});
}
loadAssets(id)
{
this.apiService.getAssetGroup(id).subscribe((data) => {
this.assetGroup = data;
this.assetSubGroupList = data.assetSubGroupList;
console.log(this.assetGroup);
});
}
在我的 html 中,我做了一个简单的循环:
<div class="row">
<div class="col-sm-12 col-lg-12">
<div *ngFor="let subGroup of assetGroup.assetSubGroupList">
<div>SubGroup: {{subGroup.name}}</div>
<div *ngFor="let asset of subGroup.assetList">Asset: {{asset.name}}</div>
</div>
</div>
</div>
我想这是 Web 开发中最常见的一些场景。但是,我收到以下错误:
无法读取 Object.eval [as updateDirectives] (AssetsComponent.html:5) 处未定义的属性“assetSubGroupList”
我最好的猜测是这是因为加载页面时assetGroup 为空。加载数据后页面实际上结束工作,但我不想要第一个错误。我认为在 Angular 中必须有一些标准的方法来处理这种情况。你总是初始化变量,使用 ngIf 甚至更聪明的东西吗?
解决方案
将运算符添加?
到assetGroup
<div *ngFor="let subGroup of assetGroup?.assetSubGroupList">
<div>SubGroup: {{subGroup.name}}</div>
<div *ngFor="let asset of subGroup.assetList">Asset: {{asset.name}}</div>
</div>
推荐阅读
- android - 最佳实践:res 文件夹 - Xdpi vs swXXXdp
- javascript - 无法导入 PapaParse
- javascript - 我的 DIV 调整器在触摸屏上不起作用
- java - 我如何拥有独立的 Java 控制台应用程序来打开带有登录页面的浏览器并阅读页面内容
- json - 比较两个嵌套字典并将它们的值的差异存储到一个新字典中
- java - 如何使用工厂为特定主题配置 Spring Kafka 侦听器?
- python - Pandas - 具有多个输出的 GroupBy
- python - 你能在 sorted() 中定义一个命名函数吗?
- jquery - Ajax:ajax 成功的未定义值
- php - 计算注册日期和 1 年之间的天数