Javascript 知道@Input参数何时更改
我想在@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值不一定
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如果答案对您有帮助,您可以接受它。非常感谢。