Dropdown下拉菜单

    当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触点,会出现一个下拉菜单。可在列表中进行选择,并执行相应的命令。

    想要了解更多关于单独引入组件的内容,可以在快速上手页面进行查看。

    最简单的下拉菜单。

    1. @Component({
    2. selector: 'nz-demo-dropdown-basic',
    3. template: `
    4. <a nz-dropdown [nzDropdownMenu]="menu">
    5. Hover me
    6. <i nz-icon nzType="down"></i>
    7. </a>
    8. <nz-dropdown-menu #menu="nzDropdownMenu">
    9. <ul nz-menu nzSelectable>
    10. <li nz-menu-item>1st menu item</li>
    11. <li nz-menu-item>2nd menu item</li>
    12. <li nz-menu-item>3rd menu item</li>
    13. </ul>
    14. </nz-dropdown-menu>
    15. `
    16. })
    17. export class NzDemoDropdownBasicComponent {}

    Dropdown下拉菜单 - 图2

    其他元素

    分割线和不可用菜单项。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-dropdown-item',
    4. template: `
    5. <a nz-dropdown [nzDropdownMenu]="menu">
    6. Hover me
    7. <i nz-icon nzType="down"></i>
    8. </a>
    9. <nz-dropdown-menu #menu="nzDropdownMenu">
    10. <ul nz-menu>
    11. <li nz-menu-item>1st menu item</li>
    12. <li nz-menu-item>2nd menu item</li>
    13. <li nz-menu-divider></li>
    14. <li nz-menu-item nzDisabled>3rd menu item(disabled)</li>
    15. </ul>
    16. </nz-dropdown-menu>
    17. `
    18. })
    19. export class NzDemoDropdownItemComponent {}

    点击菜单项后会触发事件,用户可以自由添加各种事件进行不同的操作。

    Dropdown下拉菜单 - 图4

    多级菜单

    传入的菜单里有多个层级。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-dropdown-sub-menu',
    4. template: `
    5. <a nz-dropdown [nzDropdownMenu]="menu" (nzVisibleChange)="change($event)">
    6. Cascading menu
    7. <i nz-icon nzType="down"></i>
    8. </a>
    9. <nz-dropdown-menu #menu="nzDropdownMenu">
    10. <ul nz-menu>
    11. <li nz-menu-item>1st menu item</li>
    12. <li nz-menu-item>2nd menu item</li>
    13. <li nz-submenu nzTitle="sub menu">
    14. <ul>
    15. <li nz-menu-item>3rd menu item</li>
    16. <li nz-menu-item>4th menu item</li>
    17. </ul>
    18. </li>
    19. <li nz-submenu nzDisabled nzTitle="disabled sub menu">
    20. <ul>
    21. <li nz-menu-item>3rd menu item</li>
    22. <li nz-menu-item>4th menu item</li>
    23. </ul>
    24. </li>
    25. </ul>
    26. </nz-dropdown-menu>
    27. `
    28. })
    29. export class NzDemoDropdownSubMenuComponent {
    30. change(value: boolean): void {
    31. console.log(value);
    32. }
    33. }

    在区域内任意右击触发。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-dropdown-context-menu',
    4. template: `
    5. <div class="context-area" (contextmenu)="contextMenu($event, menu)">
    6. <span class="context-intro">Context Menu</span>
    7. </div>
    8. <nz-dropdown-menu #menu="nzDropdownMenu">
    9. <ul nz-menu>
    10. <li nz-menu-item>1st menu item</li>
    11. <li nz-menu-item>2nd menu item</li>
    12. <li nz-menu-item nzDisabled>disabled menu item</li>
    13. <li nz-submenu nzTitle="sub menu">
    14. <ul>
    15. <li nz-menu-item>3rd menu item</li>
    16. <li nz-menu-item>4th menu item</li>
    17. </li>
    18. <li nz-submenu nzDisabled nzTitle="disabled sub menu">
    19. <ul>
    20. <li nz-menu-item>3rd menu item</li>
    21. <li nz-menu-item>4th menu item</li>
    22. </ul>
    23. </li>
    24. </ul>
    25. </nz-dropdown-menu>
    26. `,
    27. styles: [
    28. `
    29. .context-area {
    30. background: rgb(190, 200, 200);
    31. padding: 32px;
    32. text-align: center;
    33. }
    34. .context-intro {
    35. color: #fff;
    36. font-size: 14px;
    37. }
    38. `
    39. ]
    40. })
    41. export class NzDemoDropdownContextMenuComponent {
    42. contextMenu($event: MouseEvent, menu: NzDropdownMenuComponent): void {
    43. this.nzContextMenuService.create($event, menu);
    44. }
    45. closeMenu(): void {
    46. this.nzContextMenuService.close();
    47. }
    48. constructor(private nzContextMenuService: NzContextMenuService) {}
    49. }

    Dropdown下拉菜单 - 图6

    弹出位置

    支持 6 个弹出位置。

    默认是移入触发菜单,可以点击触发。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-dropdown-trigger',
    4. template: `
    5. <a nz-dropdown nzTrigger="click" [nzDropdownMenu]="menu">
    6. Click me
    7. <i nz-icon nzType="down"></i>
    8. </a>
    9. <nz-dropdown-menu #menu="nzDropdownMenu">
    10. <ul nz-menu>
    11. <li nz-menu-item>1st menu item</li>
    12. <li nz-menu-item>2nd menu item</li>
    13. <li nz-menu-divider></li>
    14. <li nz-menu-item nzDisabled>disabled menu item</li>
    15. <li nz-submenu nzTitle="sub menu">
    16. <ul>
    17. <li nz-menu-item>3rd menu item</li>
    18. <li nz-menu-item>4th menu item</li>
    19. </ul>
    20. </li>
    21. <li nz-submenu nzDisabled nzTitle="disabled sub menu">
    22. <ul>
    23. <li nz-menu-item>3rd menu item</li>
    24. <li nz-menu-item>4th menu item</li>
    25. </ul>
    26. </li>
    27. </ul>
    28. `
    29. })
    30. export class NzDemoDropdownTriggerComponent {}

    Dropdown下拉菜单 - 图8

    左边是按钮,右边是额外的相关功能菜单。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-dropdown-dropdown-button',
    4. template: `
    5. <div style="height: 28px;">
    6. <nz-button-group>
    7. <button nz-button (click)="log()">DropDown</button>
    8. <button nz-button nz-dropdown [nzDropdownMenu]="menu1" nzPlacement="bottomRight">
    9. <i nz-icon nzType="ellipsis"></i>
    10. </button>
    11. </nz-button-group>
    12. <nz-button-group>
    13. <button nz-button (click)="log()">DropDown</button>
    14. <button nz-button nz-dropdown [nzDropdownMenu]="menu2" nzPlacement="bottomRight">
    15. <i nz-icon nzType="user"></i>
    16. </button>
    17. </nz-button-group>
    18. <nz-button-group>
    19. <button nz-button disabled>DropDown</button>
    20. <button nz-button disabled nz-dropdown [nzDropdownMenu]="menu3" nzPlacement="bottomRight">
    21. <i nz-icon nzType="ellipsis"></i>
    22. </nz-button-group>
    23. <button nz-button nz-dropdown [nzDropdownMenu]="menu4">
    24. Button
    25. <i nz-icon nzType="down"></i>
    26. </button>
    27. </div>
    28. <nz-dropdown-menu #menu1="nzDropdownMenu">
    29. <ul nz-menu>
    30. <li nz-menu-item>menu1 1st menu item</li>
    31. <li nz-menu-item>menu1 2nd menu item</li>
    32. <li nz-menu-item>menu1 3rd menu item</li>
    33. </ul>
    34. </nz-dropdown-menu>
    35. <nz-dropdown-menu #menu2="nzDropdownMenu">
    36. <ul nz-menu>
    37. <li nz-menu-item>menu2 1st menu item</li>
    38. <li nz-menu-item>menu2 2nd menu item</li>
    39. <li nz-menu-item>menu2 3rd menu item</li>
    40. </ul>
    41. </nz-dropdown-menu>
    42. <nz-dropdown-menu #menu3="nzDropdownMenu">
    43. <ul nz-menu>
    44. <li nz-menu-item>menu3 1st menu item</li>
    45. <li nz-menu-item>menu3 2nd menu item</li>
    46. <li nz-menu-item>menu3 3rd menu item</li>
    47. </ul>
    48. </nz-dropdown-menu>
    49. <nz-dropdown-menu #menu4="nzDropdownMenu">
    50. <ul nz-menu>
    51. <li nz-menu-item>menu4 1st menu item</li>
    52. <li nz-menu-item>menu4 2nd menu item</li>
    53. <li nz-menu-item>menu4 3rd menu item</li>
    54. </ul>
    55. </nz-dropdown-menu>
    56. `,
    57. styles: [
    58. `
    59. nz-button-group {
    60. margin-right: 8px;
    61. }
    62. `
    63. ]
    64. })
    65. export class NzDemoDropdownDropdownButtonComponent {
    66. log(): void {
    67. console.log('click dropdown button');
    68. }
    69. }

    菜单隐藏方式

    默认是点击关闭菜单,可以关闭此功能。

    菜单使用 ,还包括菜单项 [nz-menu-item],分割线 [nz-menu-divider]

    用于包裹菜单项,可以通过 nzDropdownMenu 模板变量导出后传入 [nz-dropdown]NzContextMenuService

    1. <a nz-dropdown [nzDropdownMenu]="menu">Hover me</a>
    2. <nz-dropdown-menu #menu="nzDropdownMenu">
    3. <ul nz-menu>
    4. <li nz-menu-item>1st menu item</li>
    5. <li nz-menu-item>2nd menu item</li>
    6. <li nz-menu-item>3rd menu item</li>
    7. </ul>

    用于右键弹出下拉菜单,具体参见示例

    参数说明参数返回
    create创建右键菜单-
    close关闭右键菜单--