Typescript 如何知道ngOnChanges中的哪些@Input更改?
我用的是Angular 2 现在我有两个@inputTypescript 如何知道ngOnChanges中的哪些@Input更改?,typescript,angular,Typescript,Angular,我用的是Angular 2 现在我有两个@inputaa和bb。我想做: 如果aa发生变化,请采取措施 如果bb发生变化,请执行其他操作 如何知道ngOnChanges中的哪些@Input更改?谢谢 @Input() aa; @Input() bb; ngOnChanges(changes: { [propName: string]: SimpleChange }) { // if aa changes, do something // if bb changes,
aa
和bb
。我想做:
aa
发生变化,请采取措施bb
发生变化,请执行其他操作ngOnChanges中的哪些@Input更改
?谢谢
@Input() aa;
@Input() bb;
ngOnChanges(changes: { [propName: string]: SimpleChange }) {
// if aa changes, do something
// if bb changes, do other thing
}
也许可以这样做
ngOnChanges(changes: { [propName: string]: SimpleChange }) {
if( changes['aa'] && changes['aa'].previousValue != changes['aa'].currentValue ) {
// aa prop changed
}
if( changes['bb'] && changes['bb'].previousValue != changes['bb'].currentValue ) {
// bb prop changed
}
}
但是,我很惊讶没有改变的属性被定义了。从食谱中,我希望只定义更改的属性
如果太冗长,您还可以尝试使用setter方法:
_aa: string;
_bb: string;
@Input() set aa(value: string) {
this._aa = value;
// do something on 'aa' change
}
@Input() set bb(value: string) {
this._bb = value;
// do something on 'bb' change
}
谢谢,但我认为这是错误的。因为我试过了,如果只有
aa
changes,if(changes['bb']){//这里仍然运行}
噢,我的问题aa
和bb
是string
。我的应用程序它们是对象
,所以我觉得如何比较实际上取决于aa
和bb
的类型。谢谢有道理。也许setter方法更适合您的需要?对于第二种方法,代码甚至没有运行@Input()设置一个(值:string){//此处未运行}
。我想我还是错了,我做了一个猛击来证明这种行为: