J'ai la mise en œuvre suivante d'un matériel-dropdown-select et il fonctionne magnifiquement.Comment avoir la détection de changement avec matériel-dropdown-sélectionnez si vous utilisez un SelectionOptions
<material-dropdown-select [buttonText]="organizer?.name">
<material-select-item *ngFor="let sailingClub of sailingClubs"
{{sailingClub.name}}
</material-select-item>
</material-dropdown-select>
Mes données proviennent de cette propriété:
Iterable<SailingClub> get sailingClubs => _store.state.sailingClubs.values;
La bonne chose à ce sujet est que les éléments sont mis à jour automatiquement une fois que le back-end (firebase) ajoute de nouveaux éléments à la liste.
Maintenant, je veux le changer pour utiliser la liste déroulante interrogeable. Pour cela, je dois convertir les données en SelectionOptions et avec cela j'ai des problèmes. Tout fonctionne bien mais je n'ai plus la détection de changement. Ce n'est pas vraiment surprenant puisque je dois maintenant créer une instance de SelectionOptions statique et c'est la seule chose que je transmets au composant de vue.
<material-dropdown-select [buttonText]="organizer?.name"
[options]="filteredSailingClubs"
[itemRenderer]="displayNameRenderer">
<div header>
<material-select-searchbox
label="Search..."
[filterable]="filteredSailingClubs">
</material-select-searchbox>
</div>
</material-dropdown-select>
et voilà comment je crée les filteredSailingClubs
filteredSailingClubs = new StringSelectionOptions(_store.state.sailingClubs.values, toFilterableString: displayNameRenderer);
et accéder à la propriété Nom
ItemRenderer<SailingClub> displayNameRenderer = (SailingClub item) => item.name;
Je n'ai pas encore utilisé Firebase et je ne sais pas quel type de valeur il renvoie. Je pense que vous devez écouter les mises à jour, puis faire quelque chose comme 'filteredSailingClubs.optionGroups = [new OptionGroup (_store.state.sailingClubs.values)])' –
Deux questions rapides: Est-ce que votre objet magasin a un moyen d'écouter changements à cela? Quelque chose comme classe magasin { flux get onStoreChanged => ... } Et est la propriété 'sailingClubs' de l'état d'une carte, Liste, ou autre chose? –
Quelle stratégie de détection de changement utilisez-vous? Cela fonctionne-t-il si vous le changez? –