我有一个类,并且这个类有一个参数“ filter”。此类也接受输入filterChange。关于filterChange的更改,我想将filter设置为新值,然后执行将使用this.filter的函数。因为Angular 2是异步的,所以我想知道如何确保在sampleFunction运行之前过滤器将具有新值。什么是正确的方法?我正在考虑编写一个将this.filter设置为filterChange然后使用.then来调用sampleFunction的promise,但是看来我不能在Promise范围内使用“ this”。
export class StackOverFlowExample implements OnChanges{
filter = 'default';
constructor(){}
@Input filterChange;
ngOnChanges(){
this.filter = this.filterChange;
this.sampleFunction(); //how to make sure this gets the updated this.filter value?
}
sampleFunction(){
//uses this.filter;
}
}
另外,我知道我可以让sampleFunction接受一个过滤器值,并执行类似的操作:sampleFunction(this.filterChange),但这不是我想要的行为。
或者,Angular是否不像我想象的那么异步,因此这段代码还可以吗?
答案 0 :(得分:1)
您可以使用设置/获取ES6方法来实现。
export class StackOverFlowExample implements OnChanges{
filter = 'default';
constructor(){}
@Input filterChange;
private previousValue;
ngOnChanges(){}
set filterChange(value){
if(this.previousValue != value){
this.filter = value;
this.previousValue = this.filter;
this.sampleFunction(); //how to make sure this gets the updated this.filter value?
}
}
sampleFunction(){
//uses this.filter;
}
}
答案 1 :(得分:1)
简单,只要条件可行。比较Mutex
方法中的previous
和current
值
ngOnChanges