これは私を馬鹿にしています。私は銃の下にいるので、もう一日過ごす余裕はありません。FormBuilderコントロールの値を手動で設定
コンポーネント内で制御値( 'dept')を手動で設定しようとしていて、正しく機能しない場合でも、新しい値のログが正しくコンソールに記録されます。今
deptSelected(selected: { id: string; text: string }) {
console.log(selected) // Shows proper selection!
// This is how I am trying to set the value
this.form.controls['dept'].value = selected.id;
}
フォームが送信されると、私はthis.form
をログアウト時にフィールドがまだある:これは、選択したDEPTを受け取るイベントハンドラがある
initForm() {
this.form = this.fb.group({
'name': ['', Validators.required],
'dept': ['', Validators.required],
'description': ['', Validators.required],
});
}
:ここ
はFormBuilderインスタンスでありますブランク!私は他のpplの使用updateValue()
を見てきましたが、これはbeta.1であり、コントロールを呼び出すための有効なメソッドではありません。
私はまた:(なしの成功とupdateValueAndValidity()
を呼び出そうとしています。
は、私は、フォームの残りの部分が、そのカスタムディレクティブ/コンポーネントでやっているように私は、フォーム要素にngControl="dept"
を使用します。あなたはこの試みることができる
<ng-select
[data]="dept"
[multiple]="false"
[items]="depts"
(selected)="deptSelected($event)" <!-- This is how the value gets to me -->
[placeholder]="'No Dept Selected'"></ng-select>
を使用する@使用することができ、私は似たような状況に遭遇していた
FormControl
(<Control>this.form.controls['dept']).updateValue(selected.id)
を使用して、シナリオは値がhttp.getサブスクライブ中に設定したとフォームの値をロードしますが、値の行を最初に実行するように設定すると、サブスクライブは実際には非同期として後で実行されます。サブスクライブの値を設定すると、そのセットが確実に確認されます。 my2cents! – HydTechie