配列内のオブジェクトに対して*ngFor
を使用してフォームコントロールを設定しようとしています。ユーザーによっては、Arrayに1つのオブジェクトがありますが、他の倍数のオブジェクトがあることがあります。Angularの* ngForを使用してformControlNamesを設定するには?
私の問題は、コンポーネント内でフォームグループバリデーターを設定する方法がわかりませんが、ループを使用してformControlName
を作成することです。以下のように設定すると、1つのオブジェクトしか存在しない場合、存在しない他のformControlName
を探している間、フォームは無効のままになります。
だから、名前の最初のオブジェクトの場合:「日数」はリストにない、「日数」はまだthis.form
になるとコントロールに表示します:
アレイ:
indicators = [
{name:"Days",data:[250,1]},
{name:"Multiply Average",data:[3,.25,1]}
],
コンポーネント:
ngOnInit() {
this.form = this._fb.group({
"Multiply Average":['', Validators.compose([
Validators.required
])],
"Days":['', Validators.compose([
Validators.required
])],
});
};
温度後半:
<span
*ngFor="let i of indicators">
{{i.name}}:
<md-slider
formControlName={{i.name}}
color="primary"
[max]=i.data[0]
[thumb-label]="true"
[step]=i.data[1]
[min]=i.data[2]>
</md-slider>
</span>
すべてのヘルプは
AJT_82 @感謝。申し訳ありませんが、もっと明確にすべきでした。さまざまな量の辞書をインジケータ配列に渡したいと思っています。私はそれが現在2つで動作することを知っています。私が '{name:" Days "、data:[250,1]}"だけを渡すのであれば、コンポーネント内に 'Multiply Average'のフォームコントロールがあります。テンプレートには「Days」のスライダーしかありません。ループのように両方の種類を動的に更新する方法はありますか?インジケータ配列の長さがわからない場合は、可能かどうかわかりません。ありがとう – Nicholas
'FormArray'が必要なように私に聞こえますが、配列がどのように見えているのか分からず、オブジェクトの' data'配列が何であるかわからないので、実際にはそれ以上は言いません。予想される出力は正確ですか? formcontrolが保持するべき値は何ですか? – Alex
ありがとう。私はそれをより明確にするために、今、plunkrをやろうとします。私はこれまでに1つも行っていませんが、それを解決することができるはずです – Nicholas