Kątowy kształt materiału na podstawie właściwości typu

0

Pytanie

Mam składnik dialogu, który jest wyświetlany, gdy naciskam przycisk "Edytuj" obok pozycji w tabeli. W tym momencie składnik dialogu wygląda w następujący sposób:

    <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>

Wygląda i działa normalnie, i służy swoim celom. Ale teraz mam kilka innych tabel z różnymi typami danych, i, choć mogę utworzyć osobne okno dialogowe dla każdej tabeli i dodać pola ręcznie dla każdego typu, chciałbym mieć bardziej elastyczne rozwiązanie.

Jak mogę utworzyć okno dialogowe, w którym pola są dodawane w zależności od rodzaju elementu referencyjnego? Na przykład: Jeśli mam obiekt typu "Owoce" w jednej tabeli z właściwościami, takimi jak "Nazwa", "Kolor", "Cena", a obiekt typu "Samochód" z właściwościami, takimi jak "Nazwa", "Produkuje", "Moc", czy mogę użyć jeden i ten sam składnik dialogu i dynamicznie tworzyć formę?

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

Najlepsza odpowiedź

0

Oczywiście, można stworzyć jedną uniwersalną dynamiczną formę, ale to będzie zbyt trudne. Jak tylko pojawi się taka potrzeba w logice tylko dla jednego typu obiektu (na przykład, aby wyłączyć pola "a", jeśli wybrano pewną wartość w polu "do").

2021-11-23 19:49:26

W innych językach

Ta strona jest w innych językach

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