Dropdown下拉菜单
当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。
基本
最简单的下拉菜单。
@Component({
selector: 'nz-demo-dropdown-basic',
template: `
<a nz-dropdown [nzDropdownMenu]="menu">
Hover me
<i nz-icon nzType="down"></i>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu nzSelectable>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-menu-item>3rd menu item</li>
</ul>
</nz-dropdown-menu>
`
})
export class NzDemoDropdownBasicComponent {}
其他元素
分割线和不可用菜单项。
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-dropdown-item',
template: `
<a nz-dropdown [nzDropdownMenu]="menu">
Hover me
<i nz-icon nzType="down"></i>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-menu-divider></li>
<li nz-menu-item nzDisabled>3rd menu item(disabled)</li>
</ul>
</nz-dropdown-menu>
`
})
export class NzDemoDropdownItemComponent {}
触发事件
点击菜单项后会触发事件,用户可以自由添加各种事件进行不同的操作。
多级菜单
传入的菜单里有多个层级。
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-dropdown-sub-menu',
template: `
<a nz-dropdown [nzDropdownMenu]="menu" (nzVisibleChange)="change($event)">
Cascading menu
<i nz-icon nzType="down"></i>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-submenu nzTitle="sub menu">
<ul>
<li nz-menu-item>3rd menu item</li>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
<li nz-submenu nzDisabled nzTitle="disabled sub menu">
<ul>
<li nz-menu-item>3rd menu item</li>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
</ul>
</nz-dropdown-menu>
`
})
export class NzDemoDropdownSubMenuComponent {
change(value: boolean): void {
console.log(value);
}
}
右键菜单
在区域内任意右击触发。
import { NzContextMenuService, NzDropdownMenuComponent } from 'ng-zorro-antd/dropdown';
@Component({
selector: 'nz-demo-dropdown-context-menu',
template: `
<div class="context-area" (contextmenu)="contextMenu($event, menu)">
Right Click on here
</div>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-menu-item nzDisabled>disabled menu item</li>
<li nz-submenu nzTitle="sub menu">
<ul>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
<li nz-submenu nzDisabled nzTitle="disabled sub menu">
<ul>
<li nz-menu-item>3rd menu item</li>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
</ul>
</nz-dropdown-menu>
`,
styles: [
`
.context-area {
background: #f7f7f7;
color: #777;
text-align: center;
height: 200px;
line-height: 200px;
}
`
]
})
export class NzDemoDropdownContextMenuComponent {
contextMenu($event: MouseEvent, menu: NzDropdownMenuComponent): void {
this.nzContextMenuService.create($event, menu);
}
closeMenu(): void {
this.nzContextMenuService.close();
}
constructor(private nzContextMenuService: NzContextMenuService) {}
}
弹出位置
支持 6 个弹出位置。
触发方式
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-dropdown-trigger',
template: `
<a nz-dropdown nzTrigger="click" [nzDropdownMenu]="menu">
Click me
<i nz-icon nzType="down"></i>
</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-menu-divider></li>
<li nz-menu-item nzDisabled>disabled menu item</li>
<li nz-submenu nzTitle="sub menu">
<ul>
<li nz-menu-item>3rd menu item</li>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
<li nz-submenu nzDisabled nzTitle="disabled sub menu">
<ul>
<li nz-menu-item>3rd menu item</li>
<li nz-menu-item>4th menu item</li>
</ul>
</li>
</ul>
`
})
export class NzDemoDropdownTriggerComponent {}
带下拉框的按钮
左边是按钮,右边是额外的相关功能菜单。
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-dropdown-dropdown-button',
template: `
<nz-button-group>
<button nz-button (click)="log()">DropDown</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu1" nzPlacement="bottomRight">
<i nz-icon nzType="ellipsis"></i>
</button>
</nz-button-group>
<nz-button-group>
<button nz-button (click)="log()">DropDown</button>
<button nz-button nz-dropdown [nzDropdownMenu]="menu2" nzPlacement="bottomRight">
<i nz-icon nzType="user"></i>
</button>
</nz-button-group>
<nz-button-group>
<button nz-button disabled>DropDown</button>
<button nz-button disabled nz-dropdown [nzDropdownMenu]="menu3" nzPlacement="bottomRight">
<i nz-icon nzType="ellipsis"></i>
</nz-button-group>
<button nz-button nz-dropdown [nzDropdownMenu]="menu4">
Button
<i nz-icon nzType="down"></i>
</button>
<nz-dropdown-menu #menu1="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>menu1 1st menu item</li>
<li nz-menu-item>menu1 2nd menu item</li>
<li nz-menu-item>menu1 3rd menu item</li>
</ul>
</nz-dropdown-menu>
<nz-dropdown-menu #menu2="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>menu2 1st menu item</li>
<li nz-menu-item>menu2 2nd menu item</li>
<li nz-menu-item>menu2 3rd menu item</li>
</ul>
</nz-dropdown-menu>
<nz-dropdown-menu #menu3="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>menu3 1st menu item</li>
<li nz-menu-item>menu3 2nd menu item</li>
<li nz-menu-item>menu3 3rd menu item</li>
</ul>
</nz-dropdown-menu>
<nz-dropdown-menu #menu4="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>menu4 1st menu item</li>
<li nz-menu-item>menu4 2nd menu item</li>
<li nz-menu-item>menu4 3rd menu item</li>
</ul>
</nz-dropdown-menu>
`,
styles: [
`
nz-button-group {
margin: 0 8px 8px 0;
}
`
]
})
export class NzDemoDropdownDropdownButtonComponent {
log(): void {
console.log('click dropdown button');
}
}
菜单隐藏方式
默认是点击关闭菜单,可以关闭此功能。
菜单使用 nz-menu,还包括菜单项 [nz-menu-item]
,分割线 [nz-menu-divider]
。
用于包裹菜单项,可以通过 nzDropdownMenu
模板变量导出后传入 [nz-dropdown]
和 NzContextMenuService
。
注意:每个
nz-dropdown-menu
只能作为一个[nz-dropdown]
的输入项
<a nz-dropdown [nzDropdownMenu]="menu">Hover me</a>
<nz-dropdown-menu #menu="nzDropdownMenu">
<ul nz-menu>
<li nz-menu-item>1st menu item</li>
<li nz-menu-item>2nd menu item</li>
<li nz-menu-item>3rd menu item</li>
</ul>
方法/属性 | 说明 | 参数 | 返回 |
---|---|---|---|
create | 创建右键菜单 | ($event:MouseEvent | {x:number, y:number}, menu:NzDropdownMenuComponent) | - |
close | 关闭右键菜单 | - | - |