J'ai essayé de réaliser un Sidenav multiniveaux et j'ai trouvé cela qui répond à mes exigences:
menu multi-niveaux-matériau-angulaire
Démo - Notez le type d'accordéon
Malheureusement, ceci est créé pour AngularJS (1.0?), Qui semble ne pas fonctionner dans Angular 6.
Mes questions sont:
Je ne sais pas si vous êtes toujours à la recherche d'angular-material-multilevel-menu mais j'en ai trouvé un fabriqué par ShankyTiwari . Voici le lien pour GitHub et le lien pour la demo .
Très facile à utiliser et à mettre en œuvre. Par exemple, je l'ai implémenté dans une barre latérale car il n'existe pas avec le matériau angulaire . Sinon, une alternative serait PrimeNG comme @Dino l'a dit.
Matériau angulaire 6.0 ne vient pas avec un menu à plusieurs niveaux de la boîte. Vous devez le créer vous-même. Ce serait une combinaison de Menu imbriqué et Navigation latérale .
Et pour répondre à votre première question, je vous suggère de consulter le menu du panneau de PrimeNG . Il fait exactement ce dont vous avez besoin et, avec un peu d'effort, vous pourrez également changer sa conception en matériau. (Je l'ai fait avec certains composants PrimeNG, afin de pouvoir confirmer que cela fonctionne.
Veuillez prendre en compte le fait que PrimeNG 6.0.0 est actuellement dans Version Alpha-2 .
J'ai trouvé une partie d'une solution.
Voici une démonstration utilisant "mat-expansion-panel"
Certains problèmes doivent encore être résolus.
Aucune suggestion?
Je cherchais à créer des menus à plusieurs niveaux avec du matériel angulaire natif mais toujours en cours de développement par l'équipe matérielle. Donc, j'aimerais suggérer d'utiliser ng-material-multilevel-menu package pour l'instant en suivant les instructions ci-dessous:
npm install --save ng-material-multilevel-menu
ou yarn add --save ng-material-multilevel-menu
NgMaterialMultilevelMenuModule
par import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
/* Import the module*/
import { NgMaterialMultilevelMenuModule } from 'ng-material-multilevel-menu';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
NgMaterialMultilevelMenuModule // Import here
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
<ng-material-multilevel-menu [configuration]='config' [items]='appitems' (selectedItem)="selectedItem($event)"></ng-material-multilevel-menu>
dans votre code HTML.appitems
pour les éléments de votre liste et config
objectappitems = [
{
label: 'NPM',
icon: 'favorite',
link: 'https://www.npmjs.com/package/ng-material-multilevel-menu',
externalRedirect: true
},
{
label: 'Item 1 (with Font awesome icon)',
faIcon: 'fab fa-500px',
items: [
{
label: 'Item 1.1',
link: '/item-1-1',
faIcon: 'fab fa-accusoft'
},
{
label: 'Item 1.2',
faIcon: 'fab fa-accessible-icon',
items: [
{
label: 'Item 1.2.1',
link: '/item-1-2-1',
faIcon: 'fas fa-allergies'
},
{
label: 'Item 1.2.2',
faIcon: 'fas fa-ambulance',
items: [
{
label: 'Item 1.2.2.1',
link: 'item-1-2-2-1',
faIcon: 'fas fa-anchor',
onSelected: function() {
console.log('Item 1.2.2.1');
}
}
]
}
]
}
]
},
{
label: 'Item 2',
icon: 'alarm',
items: [
{
label: 'Item 2.1',
link: '/item-2-1',
icon: 'favorite'
},
{
label: 'Item 2.2',
link: '/item-2-2',
icon: 'favorite_border'
}
]
},
{
label: 'Item 3',
link: '/item-3',
icon: 'offline_pin',
onSelected: function() {
console.log('Item 3');
}
},
{
label: 'Item 4',
link: '/item-4',
icon: 'star_rate',
hidden: true
}
];
config = {
paddingAtStart: false,
classname: 'my-custom-class',
listBackgroundColor: '#fafafa',
fontColor: 'rgb(8, 54, 71)',
backgroundColor: '#fff',
selectedListFontColor: 'red',
interfaceWithRoute: true
};
interfaceWithRoute
permettra à l’élément racine d’être lié par des liens si la propriété link est disponible.