此组件:
export class ChildComponent {
@Input()
child: Child;
mychild: Child = {
id: this.child.id,
name: this.child.name:
};
}
返回此错误:
TypeError: undefined is not an object (evaluating 'this.child.id')
@Input目标对象的属性在组件中不是自动可用的吗?
mychild
属性是在组件构造函数中分配的。绑定目前不可用。
存在生命周期挂钩,以使其成为可能。根据参考,
通过OnInit
在Angular初始化数据绑定的输入属性之后,初始化指令/组件。
通过OnChanges
在Angular设置数据绑定输入属性后响应。该方法接收当前值和先前值的更改对象。
执行顺序是
通过OnChanges
在ngOnInit之前以及数据绑定的输入属性值更改时。
通过OnInit
在第一个ngOnChanges之后。
所以应该是
export class ChildComponent implements OnInit {
@Input()
child: Child;
mychild: Child;
ngOnInit() {
this.mychild = {
id: this.child.id,
name: this.child.name:
};
}
}
如果child
初始化后ngOnChanges
不应更改输入,则应使用钩子。
上面的代码似乎是多余的,因为this.child
初始化后该代码已经可用,并且可以代替来直接使用this.mychild
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句