为什么孩子没有检测到角度中父输入的变化

Rav*_*dav 3 angular

我有一个儿童组件

parent.component.html

 <child-component (changeVal) = "parentObj"></child-component>
Run Code Online (Sandbox Code Playgroud)

parent.component.ts

parentObj = {
  someDate = new Date()
}
// function changing the parentObj
callOnClick() {
   this.parentObj.someDate = new Date('20 June 2018'); 
}
Run Code Online (Sandbox Code Playgroud)

儿童组件

@Input('changeVal')
ngOnChanges() {
 // console i never see
 console.log('parentObj Changed and got me here');
}
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下onChanges挂钩没有运行?我正在改变callOnClick方法中的输入值,当changeVal的值改变时是不是应该触发?

小智 6

<child-component (changeVal) = "parentObj"></child-component>
Run Code Online (Sandbox Code Playgroud)

changeVal是代码中的输入,但是HTML中的输出.考虑使用此代替:

<child-component [changeVal] = "parentObj"></child-component>
Run Code Online (Sandbox Code Playgroud)

并声明一个变量作为输入,而不是你的函数.

@Input() changeVal: any;
Run Code Online (Sandbox Code Playgroud)