【发布时间】:2019-07-29 16:58:04
【问题描述】:
父组件模板:
<my-component [param]="whatever"></my-component>
父组件代码:
whatever = { value1: 0, value2: 1, value3: 'foo' };
子组件代码:
@Input() public param: any;
ngOnChanges() {
console.log('Received input: ', param);
}
这不起作用。对whatever 的任何更改都不会被子组件注意到,ngOnChanges 也不会触发。
如果我尝试使用 setter,它也不起作用:
@Input() set param(value) {
console.log(value);
}
如果我尝试在父组件中运行手动区域更新也无济于事。
显然@Input() 只能检测到对象的结构何时发生了变化,而不能检测到它的值。
那么如何将对象作为@Input() 属性传递并让子组件检测值变化?
【问题讨论】:
-
OnChanges 接受一个参数SimpleChanges。您可以在第一个示例中从那里获得新值,而不是从
this。 -
谢谢。但是二传手呢?
标签: angular angular6 angular2-template