0
votes

La taille automatique du matériau angulaire SideNav ne fonctionne pas

J'utilisais Angular Material pour créer un sidenav qui peut masquer le texte de navigation lorsque vous cliquez sur le menu. Je suis https://material.angular.io/components/sidenav/overview en utilisant la taille automatique sur mat-sidenav-container

Mais le sidenav superpose toujours la partie mat-sidenav-content et ne redimensionne pas automatiquement la partie contenu

J'utilise "@ angular / material": "^ 8.0.2"

entrez la description de l'image ici n

html

.example-container {
  width: 100%;
  height: 300px;
  border: 1px solid rgba(0, 0, 0, 0.5);
}

.example-sidenav-content {
  padding: 10px;
  height: 100%;
}

fichier ts

import {Component} from '@angular/core';
import { MatSidenav } from '@angular/material/sidenav';

@Component({
  selector: 'sidenav-autosize-example',
  templateUrl: 'sidenav-autosize-example.html',
  styleUrls: ['sidenav-autosize-example.css'],
})
export class SidenavAutosizeExample {
  isExpanded = false;
}

css

<mat-sidenav-container class="example-container" autosize>
  <mat-sidenav #sidenav class="example-sidenav" mode="side" opened="true">

    <mat-nav-list>
      <mat-list-item>
        <button mat-icon-button (click)="isExpanded = !isExpanded">
          <mat-icon *ngIf="!isExpanded">chevron_right</mat-icon>
          <mat-icon *ngIf="isExpanded">chevron_left</mat-icon>
        </button>
      </mat-list-item>
      <mat-list-item>
       <mat-icon mat-list-icon>home</mat-icon>
         <p matLine *ngIf="isExpanded">Home</p>
      </mat-list-item>
    </mat-nav-list>
  </mat-sidenav>
  <mat-sidenav-content>

    Main content 

</mat-sidenav-content>

</mat-sidenav-container>


1 commentaires

vous voulez masquer complètement la navigation latérale (non partielle), veuillez créer un stackblitz de votre code (ou éditer stackblitz disponible sur le site matériel et éditer en conséquence ce que vous avez fait jusqu'à présent)


3 Réponses :


1
votes
  • Pas nécessaire d'utiliser autoSize .
  • Ajoutez l'attribut [style.left]="sidenav.opened ? '.25%' : '0'" à mat-sidenav-content .
  • Pas nécessaire d'utiliser l'attribut opened sur mat-sidenav .
  • Utilisez attribue [fixedInViewport]="false" avec mat-sidenav .

3 commentaires

sidenav.opened ne peut pas fonctionner mais j'utilise [style.left] = "isExpanded? '50px': '0'" peut fonctionner mais il manquera un alignement correct lors du redimensionnement des fenêtres


Utilisez sidenav.toggle() en click sur le bouton qui régule sidenav . Utilisez également % au lieu de px pour obtenir une expérience réactive.


le [style.left] fera bouger la position du mat-sidenav-content vers la droite et la partie droite du contenu ne peut pas être affichée, comment le redimensionner automatiquement avec [style.left] appliquer?



0
votes

dans mon cas, l'ajout de autosize = "true" résout le problème

<mat-sidenav-container autosize="true">

travaille pour moi


0 commentaires

0
votes

Retirer l'élément

<mat-sidenav-content>

J'ai essayé de nombreuses manières, c'était la seule qui fonctionnait


0 commentaires