Angular FormBuilder: Мат Выберите выпадающий список для конкретных c полей - PullRequest
0 голосов
/ 13 февраля 2020

Как мне сопоставить выпадающий список выбора Mat с FormBuilder с FormControlName? Вложенный Formbuilder для AddressType не работает ниже. Второй вариант, однако я не могу указать 3 члена поля напрямую.

Хотел бы сопоставить адрес типа DTO с формой, в которой указаны указанные c поля. Это возможно или нужна практика? или я должен просто придерживаться formControlName?

<form [formGroup]="customerForm">
...
...
<mat-form-field appearance="outline"
     <mat-label>Address Type</mat-label>
     <mat-select
       formControlName = "addressType"
       (selectionChange)="addressTypeChangeEvent($event)">
     <mat-option
        *ngFor="let item of addressTypeObservable | async"
        [value]="item">
        {{item.addressTypeDescription}
      </mat-option>
     </mat-select>
</mat-form-field>

Вариант 1: Это не работает:

 this.customerForm = this.formBuilder.group({
      'customerName': [null, [Validators.required, Validators.min(1), validatorDropdown]],
      'membershipCode': [null, []],
      'addressType': this.formBuilder.group({
        'addressTypeId': [null, [Validators.required, Validators.min(1), validatorDropdown]],
        'addressTypeCode': [null, []],
        'addressTypeDescription': [null, []]
      })
    });

Ошибка: control.registerOnChange не является функция

Вариант 2: это работает, однако я не могу указать 3 члена поля непосредственно для AddressTypeDTO

 this.customerForm = this.formBuilder.group({
      'customerName': [null, [Validators.required, Validators.min(1), validatorDropdown]],
      'membershipCode': [null, []],
      'addressType': [null, []]
      })
    });
...