簡體   English   中英

Angular 2 Reactive Forms:更新值更改的選擇列表

[英]Angular 2 Reactive Forms: update select list on value changes

我有一個使用ReactiveForms構建的Angular 2表單。 表單包含2個選擇元素。 第一個包含車輛制造清單。 從列表中選擇make時,第二個select元素應顯示屬於該make的模型。

我一直在玩valueChanges,但我似乎無法獲得第二個(子)選擇元素來包含所選make的模型。 當兩個字段都只是簡單的輸入元素時,對valueChanges做出反應實際上會更新模型輸入元素(使用模型FormControl上的setValue)。 有關簡單輸入字段,請參閱以下代碼示例

是否有可能通過Reactive Forms實現這一目標?

this.vehicleForm.controls['make'].valueChanges.subscribe((value) => {
  console.log(value);
  this.vehicleForm.controls['model'].setValue('Some Value');
});

在這種情況下,'value'實際上是所選的make對象。

您可以使用變量來存儲需要在其中顯示的模型,然后使用NgFor指令在選擇列表中顯示它們:

<select class="form-control" formControlName="models">
    <option *ngFor="let m of models" [value]="m">{{m}}</option>
</select>

在您的組件中:

this.vehicleForm.controls['make'].valueChanges.subscribe((value) => {
  console.log(value);
  this.models = ... // here you add models to variable models based on selected make
});

這樣,每次更改models變量時,這些更改都將反映在下拉列表中。

作為之前所說的簡單擴展,組件中表單的監聽器需要在初始化時去某處:

onInit(){
  //Fill in makes nd intialize the form
  onChange()
}

onChange(): void {
  this.vehicleForm.controls['make'].valueChanges.subscribe((value) => {
    console.log(value);
    this.models = ... // here you add models to variable models based on selected make
  });
}

這也是如何使用Reactive Model Form的一個很好的例子: https//codecraft.tv/courses/angular/forms/reactive-model-form/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM