MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

(Angular 2) Comment remplir une liste déroulante basée sur une autre sélection de liste déroulante

Vous utilisez le node variable dans le second ngFor hors de son champ d'application. Cette variable n'existe qu'à l'intérieur de l'élément (et de ses attributs) que le ngFor agit sur.

Ce que vous voulez probablement faire est d'attendre les modifications apportées à la valeur sélectionnée de la première sélection, mettre à jour une variable dans votre contrôleur, ce qui devrait alors provoquer le second ngFor à mettre à jour. Cela peut être fait en utilisant ngModelChange :

<div class="row">
<div class="col-md-12">
    <label>Choose a room</label>
    <select [(ngModel)]="nodes" (ngModelChange)="selectedNode=$event.target.value">
        <option *ngFor="let node of nodes"[ngValue]="node">{{node.name}}</option>
    </select>

    <br/><br/>
    <label>Choose an item</label>
    <div *ngFor="let module of selectedNode.modules">
        <select [(ngModel)]="channels">
            <option *ngFor="let channel of module.channels">
              {{channel.name}}
             </option>
        </select>
    </div>
</div>