Ich versuche, ein Untermenü in einer Liste umzuschalten, wenn auf einen Link geklickt wird.Angular 2: Toggle-Untermenü (ähnlich wie jQuery slideToggle)
https://plnkr.co/edit/ZoOGJD8FUbBfPgHTKlPh?p=preview
Vorlage
<ul>
<li><a><i class="zmdi zmdi-home"></i> Home</a></li>
<li>
<a (click)="toggleNavigationSub($event)">Profile</a>
<ul [@toggleHeight]="navigationSubState">
<li><a>Settings</a></li>
<li><a>Privacy</a></li>
</ul>
</li>
<li>
<a (click)="toggleNavigationSub($event)">Messages</a>
<ul [@toggleHeight]="navigationSubState">
<li><a>Notifications</a></li>
<li><a>Private</a></li>
</ul>
</li>
</ul>
Wie Sie I 2 Untermenüs sehen können innerhalb letzten 2 li
Tags haben. Ich war in der Lage, SlideToggle Animation mit Angular2 Animationen zu erstellen, aber ich habe Probleme, es richtig zu implementieren.
Animation,
animations: [
trigger('toggleHeight', [
state('inactive', style({
height: '0',
opacity: '0'
})),
state('active', style({
height: '*',
opacity: '1'
})),
transition('inactive => active', animate('200ms ease-in')),
transition('active => inactive', animate('200ms ease-out'))
])
]
Funktion
navigationSubState: string = 'inactive';
toggleNavigationSub(event) {
event.preventDefault();
this.navigationSubState = (this.navigationSubState === 'inactive' ? 'active' : 'inactive');
}
Wenn ich die Animation durch Klicken auf die a
Tag wechseln, alle Untermenüs werden in der gleichen Zeit Makeln. Wie kann ich das Umschalten für die Untermenüs einschränken, die nur dem Klick unterzogen werden?
Das ist eine gute Frage. –