我有一個應用程序,我正在Angular 2(RC1)中開發。菜單需要從數據庫創建。數據通過Web Api以JSON形式提供。我想從數據遞歸地構建菜單,以確保菜單的深度不是問題。ngFor循環中的樣式
問題是,當我想要在ngFor循環的特定行上添加類時,該類被添加到所有行而不是我想要的。
的代碼看起來像這樣:
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>
所以,當我點擊父所有的父母變得活躍,不僅如此特別的一個,這將是令人滿意的行爲。我做錯了什麼?
你是什麼意思「,點擊父所有的父母都成了使它活性」?如果這是「點擊父母,所有'MenuComponent'變得活躍」? –
構建菜單時,它提供了父項和子項的層次結構。假設菜單的模型是:'id:number; parentId:number; name:string;兒童:IMenu [];'。所以,當我點擊菜單項的父實例時,我打開了所有父菜單的實例。想要的行爲應該是,當我點擊父實例時,它會打開,或者說只給予正確的類,以阻止所選父項的子項。 –