Bonjour,
Je travaille sur une petite application angular.
Je souhaite éditer des données affichées dans une table, dans un formulaire qui comporte un menu déroulant (Quand j'ouvre mon menu déroulant j'ai bien les différentes valeurs disponibles).
Quand je sélectionne une ligne, les champs sont bien remplis sauf pour le select qui reste vide.
Pourtant, en regardant la console de développement du navigateur, je vois bien que mon objet et il semble correct.
J'ajoute un project stackblitz pour illustrer mon problème : https://stackblitz.com/edit/angular-...component.html
voici le code de mon controller angular
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 category: {id: 1, title: "test"} id: 1 title: "test"
Et voici le code html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 @Component({ selector: 'app-event', templateUrl: './event.component.html', styleUrls: ['./event.component.css'] }) export class EventComponent implements OnInit { subscriptionForm; subscriptions; categories; displayedColumns: string[] = ['title', 'Edit']; constructor(private subscriptionSVC: SubscriptionService, private subscriptionCategoriesSVC: SubscriptionCategoriesService, private formBuilderSVC: FormBuilder) { this.subscriptionForm = this.formBuilderSVC.group({ id: 0, title: [''], category: [''], }); } ngOnInit() { this.subscriptionSVC.GetAll().subscribe(s => this.subscriptions = s ); this.subscriptionCategoriesSVC.GetAll().subscribe(c => this.categories = c ); } SelectEditSubscriptions($event, sub) { event.preventDefault(); this.subscriptionForm.setValue(sub); } }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <mat-card> <mat-card-content> <table mat-table [dataSource]="subscriptions" class="mat-elevation-z8"> <mat-text-column name="title"></mat-text-column> <ng-container matColumnDef="Title"> <th mat-header-cell *matHeaderCellDef> Title </th> <td mat-cell *matCellDef="let element"> {{element.title}} </td> </ng-container> <ng-container matColumnDef="Edit"> <th mat-header-cell *matHeaderCellDef> Edit </th> <td mat-cell *matCellDef="let element"> <a href="#" (click)="SelectEditSubscriptions($event, element)" aria-hidden="false" aria-label="icon"><mat-icon>edit</mat-icon></a> </td> </ng-container> <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> </table> </mat-card-content> </mat-card> <mat-card> <mat-card-content> <form [formGroup]="subscriptionForm"> <div> <mat-form-field> <input matInput id="ID" type="Number" formControlName="id" /> </mat-form-field> </div> <div> <mat-form-field> <input matInput id="Title" type="text" formControlName="title"> </mat-form-field> </div> <div> <mat-form-field> <mat-select formControlName="category"> <mat-option *ngFor="let cat of categories" [value]="cat">{{cat.title}}</mat-option> </mat-select> </mat-form-field> </div> </form> </mat-card-content> </mat-card>
Merci pour vos éclairages parce que je ne comprends pas pourquoi le binding du menu déroulant ne fonctionne pas...
Partager