get formData()
はゲッターアクセサと呼ばれています。プロパティを動的に取得することができます。常に値を返さなければなりません。
https://www.typescriptlang.org/docs/handbook/classes.html
活字体は、オブジェクトのメンバにアクセス を遮断する方法として、ゲッター/セッターをサポートします。これにより、各オブジェクトでどのようにメンバにアクセスするかをきめ細かく制御できるようになります。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
時には 動的に計算値を返すプロパティへのアクセスを許可することが望ましい、または明示的なの使用を必要とせずに 内部変数の状態を反映することができますメソッド が呼び出されます。 JavaScriptでは、 ゲッターを使用してこれを行うことができます。それとは逆に
、getFormDate()
は機能あり、それは常に値を返す引数を取ることができず。
プロパティは、サービスから取得する必要がありますとき、私はゲッターを使用したい場合、の一つは次のとおりです。
<p>{{dictionary.label1}}</p>
、その後、私はこのようなサービスからそれを得る:
get dictionary(){
return this.myService.getDictionary();
}
このようにサービスがデータを変更したとき、私は動的にバインディング/モデルに値を受け取ることができます。
私は次のように定義している希望の場合:
dictionary: [];
ngOnInit(){
this.dictionary = this.myService.getDictionary();
}
サービスはすでに新しいデータセットを受信しながら、私は古いデータで「立ち往生」されるだろう。もちろん、変更リスナーを設定して更新をトリガーすることはできますが、もっとコードです!
動的クラスプロパティとしてgetterを考えます。
UPDATE:あなたの更新のポストでの例については
、それは本当だ、彼らは同じ結果が得られ、それは良いことです!両方を使用することはできますが、同様に動作しないため、場合によってはさらに多くのオプションを使用できます。それはただ一つか他のものか、どちらが最善かのようではありません。ほとんどの場合、両方を使用することができます。使用する場所と使用する場所によって異なります。ほとんどの場合、より包括的に使用されるため、使用されるメソッドです。パラメータの有無にかかわらずメソッドを使用して、オブジェクトに対するアクションをトリガします。しかし、場合によってはゲッターと同じ柔軟性を持たないこともあります。どちらを使うのか躊躇している場合は、最初にこの方法を使い、その限界を見てゲッターがあなたを助けるかどうかを考えてください。
他の例:someMethodResultからsomeConditionとanotherCondition変化と結果はあなたがisShown値を要求する必要はありません変更来ていた場合
isShown:boolean; //is 'static', will return the same value unless you change it in some kind of a method
get isShown(){
return this.someCondition && this.someMethodResult() || this.anotherCondition
}
は、それが動的に行われます。その
の反対側に、あなたはisShownを更新することができるようにと呼ばれる必要があるsetShownここ
setShown(){ //the method
this.isShow = !this.isShown;
}
を持つことができます。
また、getterは、ジョブだけがクラスプロパティ値を返すメソッドを簡単に置き換えることができます。
アップデート2:
get
のために他の '良い' の例。ユーザーがいくつかのボタンを表示/非表示にするためにログに記録されているかどうかをコンポーネントがチェックする必要がある場合。代わりに、変更に加入し、あなたが実行します。
HTML:
<button [hidden]="!isLogged">Log out</button>
活字体:
get isLoggedIn(){
return this.authService.isLoggedIn();
}
そして、それはそれです!ユーザーがログアウトすると、ボタンは '即時に'無効になります。重いsubscribe/unsubscribeのneadはありません...
実際には、代入演算子を使用して関数を呼び出すのではなく、データとドット演算子を設定することができます。 – LarsMonty