角选择选项字段不显示

时间:2018-10-25 16:42:28

标签: angular angular6 angular-reactive-forms angular-forms

我正在使用Angular 6

在component.html文件中,我使用的是 FormGroup ,并且选择字段类似于

<select formControlName="mode_of_payment" type="text" id="input-mode-of-payment" class="form-control">
    <option *ngFor="let mode of modeOfPayments" [(ngValue)]="mode.id" [selected]="mode.id === amountGiven?.mode_of_payment">{{ mode.title }}</option>
</select>

component.ts 文件包含

amountGiven: AmountGiven;
updateMoneyForm: FormGroup;
modeOfPayments: Array<ModeOfPaymentData>;

ngOnInit() {

  this._initializeForm();

  // Get mode of payments
  this._getModeOfPayments();
}



private _initializeForm() {
  this.updateMoneyForm = this.formBuilder.group({
    mode_of_payment: new FormControl(),
  });
}

private _getModeOfPayments() {
  this.modeOfPaymentService.list().subscribe(
    res => {
      this.modeOfPayments = res;
      this._setFormValue();
    }
  );
}

private _setFormValue() {
  this.updateMoneyForm.setValue({
    mode_of_payment: this.amountGiven.mode_of_payment,
  });
}

但这给了选择字段,例如

enter image description here

当我单击选择字段时,会弹出选项,但即使默认情况下也不会选中所选字段,并且第一个选项始终带有刻度线。

enter image description here

2 个答案:

答案 0 :(得分:1)

您不应该使用selected指令,反应形式将为您处理:

<select [formControl]="modeOfPayment">
    <option *ngFor="let mode of modeOfPayments"
    [ngValue]="mode.id">{{ mode.title }}</option>
</select>

Here is a link to a running code.

答案 1 :(得分:0)

这里的问题是选择一个新选项不会引起TS(类型脚本)属性的任何更改。

您需要像这样对select标签实施onchange操作。

<select formControlName="mode_of_payment" type="text" id="input-mode-of-payment" 
 class="form-control" (change)="someFunction($event)">

    <option *ngFor="let mode of modeOfPayments" [(ngValue)]="mode.id" 
    [selected]="mode.id === amountGiven?.mode_of_payment">{{ mode.title }}</option>

</select>

之后,您需要实现该功能,例如,它会更改默认的选定值。