Ho un'app che sto sviluppando in Angular 2 (RC1). Il menu deve essere creato dal database. I dati vengono consegnati tramite Web Api in formato JSON. Mi piacerebbe costruire il menu dai dati in modo ricorsivo, per essere sicuro che la profondità del menu non sia un problema.Stile in ngPer loop
Il problema si verifica quando desidero aggiungere una classe su una particolare riga del ciclo ngFor e la classe viene aggiunta a tutte le righe anziché una sola a cui desidero.
Il codice sta cercando qualcosa di simile:
sidenav.component.ts
import { Component, Input } from '@angular/core';
import { IMenu } from '../../../shared/models/menu.interface';
import { MenuComponent } from './menu.component';
@Component({
moduleId: module.id,
selector: 'sidenav',
templateUrl: 'sidenav.component.html',
directives: [MenuComponent]
})
export class SidenavComponent {
@Input() menu: IMeni[]
}
sidenav.component.html
...
<menu-view [menu]="menu"></menu-view>
...
menu.component.ts
import { Component, Input } from '@angular/core';
import { IMenu } from '../../../shared/models/menu.interface';
@Component({
moduleId: module.id,
selector: 'menu-view',
templateUrl: 'menu.component.html',
directives: [MenuComponent]
})
export class MenuComponent {
isSelected: boolean = false;
@Input() meni: IMeni[];
onSelect(): void {
this.isSelected = !this.isSelected;
}
}
menu.component.html
<ul>
<li *ngFor="let item of menu; let frst=first"
class="menu-list"
[ngClass]="{'active': 'isSelected', 'active': 'frst'}">
<a [routerLink]="[item.uri]" (click)="onSelect()" > {{item.name}}</a>
<meni-view [menu]="item.children"></meni-view>
</li>
</ul>
Così, quando clicco su genitore tutti i genitori diventano attive, non solo quel particolare uno, quello che sarà il comportamento soddisfacente. Cosa faccio di sbagliato?
Che cosa si intende per "cliccare sul genitore tutti i genitori diventano attivo"? Se questo è "clicca su genitore tutti i" MenuComponent "diventano attivi"? –
Quando il menu è creato, fornisce una gerarchia di elementi padre e figlio. Diciamo che il modello per il menu è: 'id: numero; parentId: numero; nome: stringa; bambini: IMenu []; '. Quindi, quando faccio clic sull'istanza genitore della voce di menu, apro tutte le istanze dei menu principali. Il comportamento voluto dovrebbe essere quello in cui clicco su istanza genitore, si aprirà, o per dire dare la classe corretta solo per bloccare con figli del genitore selezionato. –