J'essaie de faire basculer le menu en mode angulaire 4. J'ai deux composants distincts. Le premier concerne la disposition des en-têtes et le second la liste des menus. J'ai écrit la fonction de bascule en cliquant sur l'icône dans la structure d'en-tête et j'essaie de masquer et d'afficher la liste des menus. Mais cela ne fonctionne pas pour moi.
Voici mon code:
app.navbarComponent.html fichier:
<header id='sv_header'>
<div class='row'>
<div class='col-lg-4 col-md-4 col-sm-4 col-xs-4 col'>
<a href='' class='logo'>
<img src='{{ logo }}' alt='Savaari' />
</a>
</div>
<div class='col-lg-4 col-md-4 col-sm-4 col-xs-4 col supportHolder'>
<img src='{{ customercare }}' alt='24X7 Customer Care Support' />
</div>
<div class='col-lg-4 col-md-4 col-sm-4 col-xs-4 text-right col loginHolder'>
<a class='user_login' (click)='toggleMenu()'>
<img src='{{ signin }} ' alt='signin' />
<span>Sign In</span>
</a>
</div>
</div>
</header>
app.navbarComponent.ts fichier:
import { Component } from '@angular/core';
@Component({
selector: 'navbar',
templateUrl: './app.navbarComponent.html'
})
export class NavbarComponent {
menulist: boolean = false;
logo = '../assets/img/logo.png';
customercare = '../assets/img/cc-support.png';
signin = '../assets/img/signin.png';
toggleMenu(): void {
this.menulist = !this.menulist;
alert(this.menulist);
}
}
app.menuComponent.html fichier:
<div class='menulist' >
<ul>
<li *ngFor="let menu of menus" [HIDDEN]="!menulist">
<a href="{{menu.href}}">
{{menu.name}}
</a>
</li>
</ul>
</div>
Quelqu'un peut-il m'aider à résoudre ce problème?.
Merci d'avance.
<div class='menulist'>
<ul *ngIf="!menulist">
<li *ngFor="let menu of menus">
<a href="{{menu.href}}">
{{menu.name}}
</a>
</li>
</ul>
</div>
Vous ne pouvez pas mettre * ngIf et * ngFor sur le même élément - angular n'aime pas
Il me semble que la bonne réponse n'est pas correcte. Angular propose deux méthodes pour masquer des données: *ngIf
et [hidden]
.
* ngIf est une directive structurelle, elle crée/détruit du contenu à l'intérieur du DOM.
[hidden] cache/affiche simplement le contenu avec css (ajout/suppression de display:none
au style de l'élément).
* ngIf redessine DOM, ce qui affecte les performances de votre projet. Dans ce cas, je vous conseille d'utiliser [hidden], car vous manipulez souvent le DOM
Problème résolu.
Puisque nous utilisions les deux composants différents. Nous devons écrire un service pour écouter l'événement click.
Nous devons d’abord lier l’événement de clic à l’injecteur appelé comme Service dans l’angle. Après avoir utilisé l’aide d’Injector, nous allons appeler une fonction de l’autre composant chaque fois que l’on clique sur une icône.