将变量设置为初始值

时间:2017-07-21 00:48:54

标签: angular variables

有没有办法将变量值恢复为初始值?我总共声明了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 = [];
}

但我正在寻找一种更有效或更短的方式来做到这一点。有什么想法吗?

2 个答案:

答案 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)
}