Angular 5 Material 如何将下拉菜单添加到多级轮播样式的SideNav?
Angular 5 Material How to add Dropdowns to a Multi-level Carousel style SideNav?
Hello World,我有一个 sidenav 基本上与选项卡一起工作,正是我想要在过渡中实现的效果。但现在我想通过单击 "Option 1, Option 2 or Option 3" 从选项卡进行此转换来添加,但现在出现的两个选项是带有 5 个选项和 2 个选项的下拉菜单(打开下拉菜单时)但我可以找不到实现它的方法。有人知道从哪里开始或类似的事情吗?
编辑 2018 年 12 月 19 日
查看最新的 stackblitz here for a solution that mimics the desired behaviour like this。
18.12.2018
我不确定我是否完全理解你想要实现的目标,但这里是我整理的一个快速而肮脏的 stackblitz。显然,您必须稍微调整一下 dropdowns/options 的样式,使其看起来更自然并与您的其他样式保持一致。
tab-group-basic-example.ts
的变化
{
id: 2, // 1st level
options: [
{
option: 'Dropdown with 5 options',
route: '/Submenu1',
options: [
{ label: "Option 1", route: "/Submenu1" },
{ label: "Option 2", route: "/Submenu2" },
{ label: "Option 3", route: "/Submenu3" },
{ label: "Option 4", route: "/Submenu4" },
{ label: "Option 5", route: "/Submenu5" },
]
},
// { option: 'TestJustIgnore', route: '/Submenu2' },
// { option: 'TestJustIgnore', route: '/Submenu3' },
{
option: 'Dropdown with 2 options',
route: '/Submenu4',
options: [
{ label: "Option 1", route: "/Submenu1" },
{ label: "Option 2", route: "/Submenu2" }
]
},
// { option: 'TestJustIgnore', route: '/Submenu5' },
]
}
我添加了一个 options
属性,其中包含用于您的下拉列表的选项数组,带有文本标签以显示为选项以及它应该导航到的路径。设置此 属性 后,将使用定义的选项呈现 mat-select
元素而不是 mat-list-item
。
tab-group-basic-example.html
中的变化
<a mat-list-item *ngIf="!rootOption.rootTab && !rootOption.options"
[routerLink]="rootOption.route"
routerLinkActive="active">
{{rootOption.option}}
</a>
<mat-select *ngIf="rootOption.options"
placeholder="Select an Option">
<mat-option *ngFor="let option of rootOption.options"
[routerLink]="option.route"
[value]="option.label">
{{option.label}}
</mat-option>
</mat-select>
基本上它会检查上面提到的 options
是否被定义,如果是,那么一个 mat-select
元素将使用提供的选项呈现,如果没有,那么一个正常的 mat-list-item
将正常呈现。
编辑 2018 年 12 月 19 日
查看最新的 stackblitz here for a solution that mimics the desired behaviour like this。
18.12.2018
我不确定我是否完全理解你想要实现的目标,但这里是我整理的一个快速而肮脏的 stackblitz。显然,您必须稍微调整一下 dropdowns/options 的样式,使其看起来更自然并与您的其他样式保持一致。
tab-group-basic-example.ts
{
id: 2, // 1st level
options: [
{
option: 'Dropdown with 5 options',
route: '/Submenu1',
options: [
{ label: "Option 1", route: "/Submenu1" },
{ label: "Option 2", route: "/Submenu2" },
{ label: "Option 3", route: "/Submenu3" },
{ label: "Option 4", route: "/Submenu4" },
{ label: "Option 5", route: "/Submenu5" },
]
},
// { option: 'TestJustIgnore', route: '/Submenu2' },
// { option: 'TestJustIgnore', route: '/Submenu3' },
{
option: 'Dropdown with 2 options',
route: '/Submenu4',
options: [
{ label: "Option 1", route: "/Submenu1" },
{ label: "Option 2", route: "/Submenu2" }
]
},
// { option: 'TestJustIgnore', route: '/Submenu5' },
]
}
我添加了一个 options
属性,其中包含用于您的下拉列表的选项数组,带有文本标签以显示为选项以及它应该导航到的路径。设置此 属性 后,将使用定义的选项呈现 mat-select
元素而不是 mat-list-item
。
tab-group-basic-example.html
<a mat-list-item *ngIf="!rootOption.rootTab && !rootOption.options"
[routerLink]="rootOption.route"
routerLinkActive="active">
{{rootOption.option}}
</a>
<mat-select *ngIf="rootOption.options"
placeholder="Select an Option">
<mat-option *ngFor="let option of rootOption.options"
[routerLink]="option.route"
[value]="option.label">
{{option.label}}
</mat-option>
</mat-select>
基本上它会检查上面提到的 options
是否被定义,如果是,那么一个 mat-select
元素将使用提供的选项呈现,如果没有,那么一个正常的 mat-list-item
将正常呈现。