Matériau angulaire: sélectionne pas par défaut
J'ai un tapis-sélectionnez l'endroit où les options sont tous les objets définis dans un tableau. Je suis en train de mettre la valeur par défaut pour l'une des options, mais il est en train d'être activée lorsque la page est affichée.
Mon tapuscrit fichier contient:
public options2 = [
{"id": 1, "name": "a"},
{"id": 2, "name": "b"}
]
public selected2 = this.options2[1].id;
Mon fichier HTML contient:
<div>
<mat-select
[(value)]="selected2">
<mat-option
*ngFor="let option of options2"
value="{{ option.id }}">
{{ option.name }}
</mat-option>
</mat-select>
</div>
J'ai essayé de réglage selected2
et la value
dans mat-option
à la fois l'objet et l'id, et ont essayé d'utiliser à la fois [(value)]
et [(ngModel)]
dans le mat-select
mais aucun travail.
Je suis à l'aide du matériel de la version 2.0.0-bêta.10
Grâce
source d'informationauteur William Moore
Vous devez vous connecter pour publier un commentaire.
Utiliser une liaison pour la valeur de votre modèle.
devrait être
Et dans votre sélection de valeur d'utilisation
ngModel
au lieu devalue
.devrait être
Code complet:
Sur une note de côté, comme de la version 2.0.0-bêta.12 la sélectionnez accepte désormais
mat-form-field
de l'élément de l'élément parent, de sorte qu'il est compatible avec les autres documents de contrôles de saisie. Remplacer lediv
élément avecmat-form-field
élément après la mise à niveau.Vous devrait être obligatoire comme
[value]
dans lemat-option
comme ci-dessous,DÉMONSTRATION EN DIRECT
Utilisation
compareWith
Une fonction pour comparer les valeurs d'option avec les valeurs sélectionnées. voir ici: https://material.angular.io/components/select/api#MatSelectPour un objet de la structure suivante:
Définir le texte comme ceci:
Et de définir la fonction de comparaison comme ceci:
Je suis en utilisant Angulaire 5 et formes réactives avec mat-sélectionnez et ne pouvait pas obtenir l'une des solutions ci-dessus pour afficher la valeur initiale.
J'ai dû ajouter [compareWith] pour traiter les différents types utilisés dans les tapis-sélectionner le composant. En interne, il apparaît mat-sélectionnez utilise un tableau pour contenir la valeur sélectionnée. Il est probable que le même code pour travailler avec plusieurs sélections si ce mode est activé.
Angulaire Sélectionnez Contrôle De La Doc
Voici ma solution:
Constructeur de formulaire pour initialiser le formulaire de contrôle:
De mettre en œuvre l'compareWith fonction de votre composant:
Prochaine créer et exporter le determineId fonction (j'ai dû créer une fonction autonome de sorte mat-sélectionner pourrait l'utiliser):
Enfin, ajouter les compareWith attribut à votre mat-sélectionnez: