Wie zu impliment ein sidenav Navigation drawer mit einem (Mini-Variante)
Eckig material 2-community ich brauche Eure Hilfe, wie machen die mini-Variante wie google material design Beispiel in eckig Material 2.
Ich versuche zu implementieren ist, aber ich kann nicht machen dies passieren,
Mein code so weit
<!-- ===================================================================== -->
<!-- SIDENAV && SIDENAV CONTAINER -->
<!-- ===================================================================== -->
<mat-sidenav-container>
<mat-sidenav
#adminNavMenu
mode="side"
opened="true"
style="min-width:50px; background: #F3F3F3;"
class="shadow_right" autosize>
<!-- MENU LEFT -->
<app-admin-menu-left></app-admin-menu-left>
</mat-sidenav>
<mat-sidenav-container>
app-admin-menu-left.html
<mat-nav-list style="min-width:60px;">
<mat-list-item *ngFor="let page of Menus">
<a routerLink="{{page.link}}" routerLinkActive="active"
[routerLinkActiveOptions]="{exact:true}" matLine>
<mat-icon class="home_icon collapse-icon vcenter" mat-list-icon>{{page.icon}}</mat-icon>
<span *ngIf="!showFiller">
{{page.name}}
</span>
</a>
</mat-list-item>
</mat-nav-list>
<button mat-icon-button (click)="showFiller = !showFiller" mat-raised-button>
<mat-icon *ngIf="!showFiller">chevron_right</mat-icon>
<mat-icon *ngIf="showFiller">chevron_left</mat-icon>
</button>
Ende gibt mir dieses unerwartete Ergebnis
Nachdem ich klicken Sie, um die mini-bar
Wie Sie sehen, gibt es eine Marge 250 px auf
mat-sidenav-content
aber ich kann keinen Zugriff auf dieses element.
Jede Hilfe, um dieses Problem zu lösen ist gonna nützlich sein.
Danke
werfen Sie einen Blick auf diese Frage
InformationsquelleAutor George C. | 2018-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bestanden haben dieses problem mit dieser Lösung.
Glück.
Auch, habe ich ein funktionsfähiges Beispiel in Stackblitz
home.component.html
Hause.Komponente.ts
Vermittler.service.ts
menu-left.component.html
Menü-Links.Komponente.ts
Sie müssen die richtige animation-name wieder die
home.component.ts
benennen Sie die "onSideNavChangeC" zu
onSideNavChange
sideNavState: jeder =.Vermittler.sideNavState; es ist geschrieben in MenuLeftComponent, doch es gibt keine "sideNavState" in der mediator-Dienst. diese.Vermittler.toggle().dann( snap => { console.Protokoll(snap); }); Und "toggle()" auch nicht da
Rüstemov werde ich die Antwort heute, aber vor dem update, ich denke, Sie sind ein paar Schritte fehlen.
InformationsquelleAutor George C.
Habe ich gerungen mit diesem ziemlich viel. Die Lösung ist viel einfacher, als Sie vielleicht denken...fast alles, was in eckigen animiert werden können, und wir lösen dieses problem mit ein paar Zeilen sehr einfache animation, code,...
in einer Datei namens sidenav.Animationen.ts
Erstellen Sie eine animation der Breite der <mat-sidenav> zwischen 200px und 60px
Erstellen Sie eine zweite animation zu animieren, die <mat-sidenav-content - > ist zwischen einem margin-left von 201px und 61px.
./sidenav.Animationen.ts
in Ihrer app.Komponente.ts...
Importieren Sie die zwei Animationen und verwenden Sie Sie in der Animation-array, das Ihnen erlaubt, die Anwendung der Trigger definiert ist, in sidenav.Animationen.ts ('openCloseSidenav' und 'openCloseSidenavContent') innerhalb Ihrer app.component.html
Erstellen Sie ein Wahrheitswert (boolean isOpen), um zu verfolgen, welche Zustand der sidenav ist in
Erstellen Sie eine Funktion namens toggle() schaltet die variable isOpen zwischen true und false. Diese Funktion wird aufgerufen, aus dem drücken eines Knopfes app.component.html
./app.Komponente.ts
Vergessen Sie nicht importieren Sie Ihre MatSidenavModule, MatButtonsModule, MatIconModule, MatListModule, und BrowserAnimationsModule in Ihre app.- Modul.ts als gut, oder Sie werden nicht in der Lage zu verwenden <mat-sidenav> oder jeder beliebigen Stelle in Ihrem app.component.html
und in Ihrem app.component.html...
Werden Sie call toggle() mit einer Schaltfläche platziert irgendwo in der sidenav.
Platzieren Sie den animation trigger: 'openCloseSidenav' auf den <mat-sidenav> mit einem expression, wählen, welche der zwei definierte Zustände ('offen' oder 'geschlossen' wie definiert, in sidenav.Animationen.ts) das element sein sollten, und die Animation zwischen den Staaten, abhängig vom Zustand der Variablen isOpen.
Platzieren Sie den animation trigger: 'openCloseSidenavContent' auf den <mat-sidenav-content> mit dem gleichen Ausdruck wie oben.
./app.component.html
Müssen Sie füllen Sie den rest selbst, mein <mat-sidenav-Liste> hat Zeug wie unten gezeigt.
...Ich bin mit der variable isOpen zu entscheiden, ob der text neben den icons angezeigt werden soll..ich werde bald entweder hinzufügen von Animationen zu den <mat-chip-Liste> - tags zu machen, diejenigen, die ausgeblendet werden, wenn die toggle() aufgerufen und isOpen verpasst oder ich verkürze die animation mal runter auf 0,0 s, so dass es einrastet sofort zwischen den beiden Staaten...
...dies wird jedoch funktionieren die auch ohne die *ngIf="isOpen" in den tag...
...big mitnehmen hier ist, dass einfach Animationen können verwendet werden, um das Verhalten und Aussehen von jedem Aspekt von Ihrem app...
besuchen https://angular.io/guide/animations für mehr details auf, wie das genau funktioniert...
InformationsquelleAutor San Francisco Sunrise
Verwenden typescript-code aktualisieren können Sie die Breite der Seitenleiste wie diese :
und die entsprechende html-Datei sieht wie
Hier habe ich die Breite und margin-left für den Inhalt dynamisch anpassen.
InformationsquelleAutor Sunil Kumar