Quand j'essaie de donner un menu déroulant. Par défaut, je dois sélectionner une valeur à afficher. Lorsque je n'utilise pas ngModel, je peux afficher la valeur par défaut.
Sans ngModel
<select class="form-control">
<option *ngFor="let type of ListType" [value]="type .id">{{type .name}}</option>
</select>
Le code ci-dessus fonctionne bien lorsque nous le compilons. Je suis capable de voir la première valeur sur la liste à afficher.
Avec ngModel
<select class="form-control" [(ngModel)]="selectedListType">
<option *ngFor="let type of ListType" [value]="type .id">{{type .name}}</option>
</select>
C'est l'affichage est vide.
Méthodes essayées:
<option *ngFor="let type of ListType" [selected]="type.name === 'Dislike'" [value]="type .id">{{type .name}}</option>
<option *ngFor="let type of ListType" [ngValue]="type " [attr.selected]="type .name== type.name ? true : null">{{ type.name }}</option>
MODIFIER
Y a-t-il un autre moyen? Ou Est-ce que je fais quelque chose de mal?
Vous définissez la valeur de la variable select
en tant que valeur id
, alors que vous alimentez la variable selectedListType
avec la propriété name
. Donc, vous voulez soit fournir la valeur id
pour selectedListType
, ainsi, par exemple, si votre ListType
ressemble à ceci:
[{id:1, name: 'Dislike'},{...}]
vous voulez définir la valeur selectedListyType
comme 1
. Une autre option est, si vous ne connaissez pas la valeur id, vous pouvez faire:
ngOnInit() {
this.selectedListType = this.ListType.find(x => x.name === 'Dislike').id
}
et votre modèle ressemblera alors à ceci:
<select class="form-control" [(ngModel)]="selectedListType">
<option *ngFor="let type of ListType" [value]="type.id">{{type.name}}</option>
</select>
Essayez de garder votre valeur et ngModel identiques
value = {{type .id}}
et [(ngModel)]= "selectedListType.id"
et imprimer la valeur une fois sélectionnée en HTML
<br>id is {{selectedListType.id}}