angular - Angular - 子组件不呈现来自 http 请求的数据更新
问题描述
我在 app.component.html 中有这个组件结构:
<sidebar-container></sidebar-container>
<router-outlet></router-outlet>
侧边栏容器是属于另一个模块(sidebar.module)的组件。在 sidebarContainer 组件的 ngOnInit 中,我有一个名为“list”的属性,它作为一个空数组启动。
export class SidebarContainer implements OnInit {
list: Array<any> = [];
constructor(
private http: HttpClient,
) {}
ngOnInit():void {
this.http.get('url').subscribe(
res => this.list = res
}
该列表具有以下结构:
[{id: 1, name: "Michael"}]
在侧边栏容器子组件中,我只有这个模板(侧边栏是一个组件,它只有一个 div 用于呈现作为输入传递的列表):
<sidebar [list]="list"></sidebar>
侧边栏组件模板:
<div *ngFor="let l of list">{{l.id}}</div>
现在,当我启动应用程序并尝试调试数据时,数据没有更新,我什么也看不到。Http 请求在组件刚刚加载并且 ngfor 似乎不起作用时开始。但是当我在侧边栏组件模板中初始化数组的值时,如下所示:
test -> {{list[0].id}}
<div *ngFor="let l of list">{{l.id}}</div>
我可以看到这两个值。
我无法理解这种情况。我究竟做错了什么?
解决方案
在您的模板中,如果 id 已定义,请放置检查条件。
<div *ngFor="let l of list">{{l.hasOwnProperty('id')?l.id:''}}</div>
推荐阅读
- python - 我使用 super() 函数在子类的内部调用父类的 __init__() ,但这不应该创建父类的实例吗?
- cmake - CMAKE:具有非标准前缀/后缀的链接库
- javascript - 更漂亮 + VS 代码。返回语句后在网页上打印分号 (.js)
- layout - 如何在动态创建的布局中访问视图的属性
- sql - SQL查询使用查找表来选择基于一天的记录数
- node.js - 如何在 MongoDB 中使用联合类型作为 TypeORM 中的条目
- php - 联系表单 php 处理程序
- r - 有没有办法确定用户点击哪个轴标签来绘制闪亮的图?
- hibernate - 如果孩子为空,休眠ManyToMany删除另一边
- reactjs - Framer Motion:修复使用 AnimateSharedLayout 进行动画处理时的子失真