Unghiulare formă materială în funcție de tipul de proprietăți

0

Problema

Am un dialog component care arată când m-am faceți clic pe un buton "Editare" de lângă un element într-un tabel. Caseta de dialog component se pare ca asta de acum:

    <h1 mat-dialog-title>{{item.ID}}</h1>
<div mat-dialog-content>
    <p>Edit item</p>
    <mat-form-field appearance="outline" style="justify-content: center;">
        <mat-label>ID</mat-label>
        <input matInput [(ngModel)]="item.ID">
    </mat-form-field>
    <mat-form-field appearance="outline">
        <mat-label>Name</mat-label>
        <input matInput [(ngModel)]="item.Name">
    </mat-form-field>
    <mat-form-field appearance="outline">
        <mat-label>Date</mat-label>
        <input matInput [(ngModel)]="item.Date">
    </mat-form-field>
</div>
<div mat-dialog-actions style="justify-content: center;">
    <button mat-button (click)="onNoClick()">Cancel</button>
    <button mat-button [mat-dialog-close]="item.ID" cdkFocusInitial>Save</button>
</div>

Acest lucru arată și funcționează bine, și servește scopului său. Dar acum am mai multe tabele cu diferite tipuri de date, și în timp ce eu pot crea un dialog separat pentru fiecare tabel și adăugați câmpuri de formular manual pentru fiecare tip, aș dori să aibă o mai flexibilă soluție.

Cum pot crea un dialog în care câmpurile din formular sunt adăugate în funcție de elementul de referință este de tip? E. g: Dacă am un obiect de tip "Fructe" într-un tabel cu properites ca "Nume", "Culoare", "Preț", și un obiect de tip "Auto" cu proprietăți, cum ar fi "Nume", "Fabricate", "cal-Putere", pot folosi la fel de dialog component și de a crea forma în mod dinamic?

angular angular-material html typescript
2021-11-23 18:33:47
1

Cel mai bun răspuns

0

Desigur, este posibil să se facă o singură universal formă dinamică, dar va fi prea dificil. De îndată ce va fi nevoie de logica pentru un singur tip de obiect (de exemplu pentru dezactivarea câmp "," dacă o anumită valoare în câmpul "b" este selectat).

2021-11-23 19:49:26

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................