2 votes

Erreur avec Angular Material sidenav : cannot read property of undefined

Je travaille sur une application client Angular et j'ai déjà utilisé quelques fonctionnalités de Material dans cette application, comme le dialogue, la sélection, la carte, etc. Je pense que j'ai déjà installé tout ce dont j'ai besoin. Maintenant j'ai fait un sidenav et je veux utiliser le module sidenav de Material, donc je l'ai fait comme ceci :

<mat-container>
  <mat-content>
    <div (click)="sidenav.toggle()"></div>
    my component html . . .
  </mat-content>
  <mat-sidenav #sidenav>
    <app-sidenav></app-sidenav>
  </mat-sidenav>
</mat-container>

Maintenant, lorsque je navigue vers ce composant, je reçois une erreur :

Non trouvé (dans promise):TypeError : Cannot read property 'runOutsideAngular' of undefined

Sans le composant, il fonctionne parfaitement bien... Quelqu'un sait-il quel pourrait être le problème ? Merci !

5voto

SteveBl Points 143

J'ai fait presque le même code mais j'ai changé les éléments suivants :

  • <mat-container> => <mat-drawer-container>
  • <mat-content> => <mat-drawer-content>
  • <mat-sidenav #sidenav> => <mat-drawer #drawer>

2voto

mattavatar Points 439

J'ai rencontré la même erreur en exécutant ng test sur Schéma de navigation d'Angular Material :

ng generate @angular/material:material-nav --name <component-name>

J'ai résolu le problème en changeant mat-sidenav a mat-drawer en el mat-navbar-test.component.html .

0voto

J'ai fait le sidenav comme ça et il fonctionne correctement, essayez ceci.

<mat-container>
  <mat-content>
    <div (click)="sidenav.toggle()">
        my component html . . .
    </div>
  </mat-content>
  </mat-container>
  <mat-sidenav-container>
    <mat-sidenav #sidenav>
        <app-sidenav></app-sidenav>
    </mat-sidenav>
</mat-sidenav-container>

0voto

Gavin Chebor Points 9

Avant

<mat-sidenav-container *ngIf="currentAdmin && currentAdmin.role" id="nav" >

J'ai rencontré ce problème et l'ai résolu en supprimant *ngIf sur le parent, 'mat-sidenav-container'.

<mat-sidenav-container id="nav" >

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X