使用组件访问@input目标对象的属性

用户名

此组件:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章