2017-07-21 9 views
0

変数値を初期値に戻す方法はありますか?変数を初期値に設定する

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 = []; 
} 

しかし、私はそれを行うには、より効率的か短い方法を探しています:私は、たとえば、すべての変数をリセットする必要がある)の変数は、合計で宣言された40のように、保存(後に私が持っています。何かご意見は?

+0

:ここにいくつかの変更とハリーのcodesampleを使用したサンプルです。あなたがすべきことは、変数をクラスに格納し、一度それを再インスタンス化して変数を再初期化することです。 – Ploppy

+0

これは私がやっていることで、別の解決策を得ようとしていただけです – BlackJair

+0

すべての変数を初期化する関数を作成し、データにリセットが必要なときに同じ関数を使うことができます – LookForAngular

答えて

1

一つが可能Lodash cloneDeepと、このための回避策は次のとおりです。

保持対象物のフィールドとして、あなたの最初の変数の値を定義します

defaultVariables: any = { 
    client: '', 
    select: '0', 
    products: [] 
} 
workingVariables: any; 

クローンを作成するために_.cloneDeepを使用して、そのオブジェクトを触れないでくださいリセット、あなたのclearFields機能に続いて

import * as _ from 'lodash'; 

ngOnInit() { 
    this.workingVariables = _.cloneDeep(this.defaultVariables); 
} 

:クローン化されたオブジェクトで作業を開始、それのと再び_.cloneDeepを使用してデータ:

clearFields(){ 
    this.workingVariables = _.cloneDeep(this.defaultVariables); 
} 
1

ハリーの答えは良いです:)だけだけではなく、Object.assign()を使用し、あなたがlodashせずにこれを行うことができますことを提示したかったです。私はそれが可能だとは思わない

defaultVariables: any = { 
    client: '', 
    select: '0', 
    products: [] 
} 

workingVariables: any; 

ngOnInit() { 
    this.workingVariables = Object.assign({}, this.defaultVariables) 
} 

clearFields(){ 
    this.workingVariables = Object.assign({}, this.defaultVariables) 
} 
関連する問題