Вы можете создать свой собственный компонент «обертка» вокруг поля формы, выбрать компоненты и дать ему вход «источника данных», понятный компоненту.Например:
select-field-component.ts
import {Component, Input} from '@angular/core';
@Component({
selector: 'select-field',
templateUrl: 'select-field-component.html'
})
export class SelectFieldComponent {
@Input() datasource: any[];
@Input() label: string;
@Input() labelKey: string;
@Input() value: any;
@Input() valueKey: string;
}
select-field-component.html
<mat-form-field>
<mat-label *ngIf="label">{{label}}</mat-label>
<mat-select [(value)]="value">
<mat-option *ngFor="let item of datasource" [value]="item[valueKey]">
{{item[labelKey]}}
</mat-option>
</mat-select>
</mat-form-field>
Очевидно, это простой пример - вы можете добавить гораздо больше возможностей.Вот он в действии на StackBlitz .