有没有办法将变量值恢复为初始值?我总共声明了40个变量,在save()之后我需要重置每个变量,例如:
client = ''; select = '0'; products = [];
constructor(private http: Http){}
save(objSave){
this.http.post('url', objSave).subscribe(data => this.clearFields());
}
clearFields(){
this.client = '';
this.select = '0';
this.products = [];
}
但我正在寻找一种更有效或更短的方式来做到这一点。有什么想法吗?
答案 0 :(得分:1)
Lodash cloneDeep的一个可能的解决方法是:
将初始变量值定义为保持对象的字段
defaultVariables: any = {
client: '',
select: '0',
products: []
}
workingVariables: any;
请勿触摸该对象,使用_.cloneDeep
创建它的克隆并开始处理克隆对象:
import * as _ from 'lodash';
ngOnInit() {
this.workingVariables = _.cloneDeep(this.defaultVariables);
}
然后在clearFields
功能中,再次使用_.cloneDeep
重置数据:
clearFields(){
this.workingVariables = _.cloneDeep(this.defaultVariables);
}
答案 1 :(得分:1)
哈利的回答很好:)只是想表明你可以不用lodash这样做,只需使用Object.assign()
。以下是使用Harry的代码示例进行一些更改的示例:
defaultVariables: any = {
client: '',
select: '0',
products: []
}
workingVariables: any;
ngOnInit() {
this.workingVariables = Object.assign({}, this.defaultVariables)
}
clearFields(){
this.workingVariables = Object.assign({}, this.defaultVariables)
}