Я бы предложил создать компонент для каждой подформы, а затем *ngIf
их на основе выбранной опции, например так:
<!-- component.html -->
<mat-form-field>
<mat-select placeholder="Type" [(ngModel)]="row.Type" (change)="onTypeChosen(row.Type, row)">
<mat-option [value]="0">Treatment</mat-option>
<mat-option [value]="1">Travel</mat-option>
<mat-option [value]="2">Medication</mat-option>
<mat-option [value]="3">Equipment</mat-option>
</mat-select>
</mat-form-field>
<my-treatment-component *ngIf="type === 0" [someInput]="'some value'"></my-treatment-component>
<my-travel-component *ngIf="type === 1" [somethingElse]="true"></my-travel-component>
<my-medication-component *ngIf="type === 2" (someOutput)="onMedicationOutput($event)"></my-medication-component>
<my-equipment-component *ngIf="type === 3"></my-equipment-component>
Если у вас уже есть что-то, удерживающее выбор типа, вывместо этого можно связать это с *ngIf
s.Если нет, создайте поле в вашем классе контроллера и удерживайте там выбранный тип.
// component.ts
public type: number | null = null;
public onTypeChosen(type: number, row): void {
this.type = type;
}
Если ваши подформы имеют части, которые можно использовать повторно (или в основном те же самые, без конфигурации),Как правило, рекомендуется извлекать повторно используемый код в компоненты и из себя и объединять их вместе.
Надеюсь, это немного поможет: -)