気が狂いそうです。私は追い詰められており、これに丸一日を費やす余裕はありません。
コンポーネント内で制御値 ('dept') を手動で設定しようとしていますが、新しい値もコンソールに適切に記録されても機能しません。
以下は FormBuilder インスタンスです。
initForm() {
this.form = this.fb.group({
'name': ['', Validators.required],
'dept': ['', Validators.required],
'description': ['', Validators.required],
});
}
これは、選択された部門を受け取るイベント ハンドラーです。
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
フィールドはまだ空白のままです。他の人が使用しているのを見たことがありますupdateValue()
が、これはベータ 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>
ベストアンサー1
更新日: 2017/03/19
this.form.controls['dept'].setValue(selected.id);
古い:
今のところ、型キャストを実行する必要があります。
(<Control>this.form.controls['dept']).updateValue(selected.id)
あまりエレガントではないと思います。将来のバージョンで改善されることを期待します。