Javascript 知道@Input参数何时更改

Javascript 知道@Input参数何时更改,javascript,angular,typescript,Javascript,Angular,Typescript,我想在@Input每次更改时执行一个函数。 我试着这样做: ngOnChanges(changes: { [propName: string]: SimpleChange }) { if( changes['inputName'] && changes['inputName'].previousValue != changes['inputName'].currentValue ) { this.func(); } } 但我的问题是: 我的@Input值不一定

我想在@Input每次更改时执行一个函数。 我试着这样做:

 ngOnChanges(changes: { [propName: string]: SimpleChange }) {
  if( changes['inputName'] && changes['inputName'].previousValue != changes['inputName'].currentValue ) {
    this.func();
  }
}
但我的问题是: 我的@Input值不一定要更改 (可以是“a”,也可以是“a”) 但即使它没有改变,我也要执行这个函数。
我能做什么?

您需要调用setter方法,每次@Input()都会更改

@Input('inputName') set cmpRef (cmp : any){
   // your function call here goes every time @Input() changes, this setter method is called.
      this.func();
 }

每次更改@Input()都需要调用setter方法

@Input('inputName') set cmpRef (cmp : any){
   // your function call here goes every time @Input() changes, this setter method is called.
      this.func();
 }

我通过将object放在@Input参数而不是字符串中解决了这个问题。
现在,每次我更改它时,它都会更改。

我解决了这个问题,将object放在@Input参数中,而不仅仅是字符串。
现在每次我更改它时,它都会更改。

也许你只要去掉这个if语句,然后在ngOnChanges body中启动这个.func()?这可能是个好主意,但我有一些输入,我只想在特定输入发生更改时执行函数。您的输入类型是什么?也许您可以去掉这个if语句,然后在ngOnChanges body中启动这个.func()?这可能是个好主意,但我有一些输入,我只想在特定输入发生更改时执行该函数。您的输入类型是什么?我尝试过这样做,但该集合仅在第一次更改输入时有效,而不是每次都有效。您必须为input()修改对象才能正常工作,为此,您可以使用destructing或object.assign()@如果答案对你有帮助,你可以接受。谢谢。我尝试过这样做,但集合只在第一次更改输入时才起作用,而不是每次都起作用。要使input()正常工作,您必须对对象进行不可变设置,因此您可以使用destructing或object.assign()@Tammar如果答案对您有帮助,您可以接受它。非常感谢。