javascript - 从 Angular 父组件传递到子组件的数据在子组件中未定义
问题描述
我有一个父组件将信息传递给子组件,但它是未定义的。如果这是 Angular 101,我深表歉意,但是如何延迟子组件渲染或运行任何 javascript,直到它获得所需的输入?
拉入数据的父组件 ngOnInit:
public ngOnInit(): void {
this.productService.getProductById(1).subscribe(product => {
this.product = product;
});
}
父组件 HTML:
<child-component [product]="product" id="myProduct"></child-component>
子组件输入声明:
@Input() public product: Product;
要求产品存在的子组件 ngOnInit:
public ngOnInit(): void {
// It is returning as undefined
console.log(this.product);
}
解决方案
这是因为产品是异步加载的,所以当视图最初渲染时,产品是未定义的
<child-component *ngIf="product" [product]="product" id="myProduct"></child-component>
你也可以使用 Onchanges
ngOnChanges(changes: SimpleChanges) {
if (changes['product']) {
let variableChange = changes['product'];
}
}
推荐阅读
- firebase - 通过 Firebase Functions 将图像下载到用户本地计算机
- gmail - 如何过滤来自以下地址的垃圾邮件:“from@<
>.com”? - arrays - 谷歌表格匹配/索引查询
- kendo-ui - Kendo UI Grid jQuery 顶部单元格值填充此列中的其他单元格
- python - seaborn 如何更改垃圾箱的宽度
- javascript - 使用 maplibre-gl-js 加载本地 .mbtiles
- javascript - document.addEventListener('load' 没有调用函数
- android - 如何解析这种具有不同名称的 json,或者告诉我如何在回收站视图中显示此响应。:(
- seurat - 如何将 Seurat 对象加载到 WGCNA 教程格式中
- mysql - SQL:如何根据与具有首选匹配顺序的多个可能值匹配的列来选择单行?