Drawer抽屉

    • 当需要一个附加的面板来控制父窗体内容,这个面板在需要时呼出。比如,控制界面展示样式,往界面中添加内容。
    • 当需要在当前任务流中插入临时任务,创建或预览附加内容。比如展示协议条款,创建子对象。

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

    基础抽屉,点击触发按钮抽屉从右滑出,点击遮罩区关闭

    1. @Component({
    2. selector: 'nz-demo-drawer-basic-right',
    3. template: `
    4. <button nz-button nzType="primary" (click)="open()">Open</button>
    5. <nz-drawer
    6. [nzClosable]="false"
    7. [nzVisible]="visible"
    8. nzPlacement="right"
    9. nzTitle="Basic Drawer"
    10. (nzOnClose)="close()"
    11. >
    12. <p>Some contents...</p>
    13. <p>Some contents...</p>
    14. <p>Some contents...</p>
    15. </nz-drawer>
    16. `
    17. })
    18. export class NzDemoDrawerBasicRightComponent {
    19. visible = false;
    20. open(): void {
    21. this.visible = true;
    22. }
    23. close(): void {
    24. this.visible = false;
    25. }
    26. }

    Drawer抽屉 - 图2

    对象编辑

    用于承载编辑相关操作,需要点击关闭按钮关闭。

    在抽屉内打开新的抽屉,用以解决多分支任务的复杂状况。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-drawer-multi-level-drawer',
    4. template: `
    5. <button nz-button nzType="primary" (click)="open()">New Cookbook</button>
    6. <nz-drawer
    7. [nzClosable]="false"
    8. [nzOffsetX]="childrenVisible ? 180 : 0"
    9. [nzWidth]="320"
    10. [nzVisible]="visible"
    11. nzTitle="Cookbook"
    12. (nzOnClose)="close()"
    13. >
    14. <form nz-form>
    15. <div nz-row>
    16. <div nz-col nzSpan="24">
    17. <nz-form-item>
    18. <nz-form-label>Name</nz-form-label>
    19. <nz-form-control>
    20. <input nz-input placeholder="please enter cookbook name" />
    21. </nz-form-control>
    22. </nz-form-item>
    23. </div>
    24. </div>
    25. <div nz-row>
    26. <div nz-col nzSpan="24">
    27. <nz-form-item>
    28. <nz-form-label>Food</nz-form-label>
    29. <nz-form-control>
    30. <nz-tag>potato</nz-tag>
    31. <nz-tag>eggplant</nz-tag>
    32. <nz-tag (click)="openChildren()">+</nz-tag>
    33. </nz-form-control>
    34. </nz-form-item>
    35. </div>
    36. </div>
    37. </form>
    38. <div class="footer">
    39. <button type="button" (click)="close()" class="ant-btn" style="margin-right: 8px;"><span>Cancel</span></button>
    40. <button type="button" (click)="close()" class="ant-btn ant-btn-primary"><span>Submit</span></button>
    41. </div>
    42. <nz-drawer [nzClosable]="false" [nzVisible]="childrenVisible" nzTitle="Food" (nzOnClose)="closeChildren()">
    43. <nz-list [nzDataSource]="vegetables" [nzRenderItem]="item">
    44. <ng-template #item let-item>
    45. <nz-list-item [nzContent]="item"></nz-list-item>
    46. </ng-template>
    47. </nz-list>
    48. </nz-drawer>
    49. </nz-drawer>
    50. `,
    51. styles: [
    52. `
    53. .footer {
    54. position: absolute;
    55. bottom: 0px;
    56. width: 100%;
    57. border-top: 1px solid rgb(232, 232, 232);
    58. padding: 10px 16px;
    59. text-align: right;
    60. left: 0px;
    61. background: #fff;
    62. `
    63. ]
    64. })
    65. export class NzDemoDrawerMultiLevelDrawerComponent {
    66. visible = false;
    67. childrenVisible = false;
    68. vegetables = ['asparagus', 'bamboo', 'potato', 'carrot', 'cilantro', 'potato', 'eggplant'];
    69. open(): void {
    70. this.visible = true;
    71. }
    72. close(): void {
    73. this.visible = false;
    74. }
    75. openChildren(): void {
    76. this.childrenVisible = true;
    77. }
    78. closeChildren(): void {
    79. this.childrenVisible = false;
    80. }
    81. }

    Drawer抽屉 - 图4

    自定义位置

    自定义位置,点击触发按钮抽屉从相应的位置滑出,点击遮罩区关闭

    需要快速预览对象概要时使用,点击遮罩区关闭。

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'nz-demo-drawer-user-profile',
    4. template: `
    5. <nz-list [nzDataSource]="data" [nzRenderItem]="item" [nzItemLayout]="'horizontal'">
    6. <ng-template #item let-item>
    7. <nz-list-item [nzActions]="[viewAction]">
    8. <ng-template #viewAction>
    9. <a (click)="open()">View Profile</a>
    10. </ng-template>
    11. <nz-list-item-meta
    12. [nzTitle]="nzTitle"
    13. nzAvatar="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"
    14. nzDescription="Progresser AFX"
    15. >
    16. <ng-template #nzTitle>
    17. <a href="https://ng.ant.design">{{ item.name }}</a>
    18. </ng-template>
    19. </nz-list-item-meta>
    20. </nz-list-item>
    21. </ng-template>
    22. <nz-drawer [nzVisible]="visible" [nzWidth]="640" [nzClosable]="false" (nzOnClose)="close()">
    23. <p class="title" style=" margin-bottom: 24px;">User Profile</p>
    24. <p class="title">Personal</p>
    25. <div nz-row>
    26. <div nz-col nzSpan="12">
    27. <div class="item-wrap">
    28. <p class="label">Full Name:</p>
    29. Lily
    30. </div>
    31. </div>
    32. <div nz-col nzSpan="12">
    33. <div class="item-wrap">
    34. <p class="label">Account:</p>
    35. AntDesign@example.com
    36. </div>
    37. </div>
    38. </div>
    39. <div nz-row>
    40. <div nz-col nzSpan="12">
    41. <div class="item-wrap">
    42. <p class="label">City:</p>
    43. HangZhou
    44. </div>
    45. </div>
    46. <div nz-col nzSpan="12">
    47. <div class="item-wrap">
    48. <p class="label">Country:</p>
    49. China🇨🇳
    50. </div>
    51. </div>
    52. </div>
    53. <div nz-row>
    54. <div nz-col nzSpan="12">
    55. <div class="item-wrap">
    56. <p class="label">Birthday:</p>
    57. February 2,1900
    58. </div>
    59. </div>
    60. <div nz-col nzSpan="12">
    61. <div class="item-wrap">
    62. <p class="label">Website:</p>
    63. -
    64. </div>
    65. </div>
    66. </div>
    67. <div nz-row>
    68. <div nz-col nzSpan="24">
    69. <div class="item-wrap">
    70. <p class="label">Message:</p>
    71. Make things as simple as possible but no simpler.
    72. </div>
    73. </div>
    74. </div>
    75. <nz-divider></nz-divider>
    76. <p class="title">Company</p>
    77. <div nz-row>
    78. <div class="item-wrap">
    79. <p class="label">Position:</p>
    80. Programmer
    81. </div>
    82. </div>
    83. <div nz-col nzSpan="12">
    84. <div class="item-wrap">
    85. <p class="label">Responsibilities:</p>
    86. Coding
    87. </div>
    88. </div>
    89. </div>
    90. <div nz-row>
    91. <div nz-col nzSpan="12">
    92. <div class="item-wrap">
    93. <p class="label">Department:</p>
    94. AFX
    95. </div>
    96. </div>
    97. <div nz-col nzSpan="12">
    98. <div class="item-wrap">
    99. <p class="label">Supervisor:</p>
    100. <a>Lin</a>
    101. </div>
    102. </div>
    103. </div>
    104. <div nz-row>
    105. <div nz-col nzSpan="24">
    106. <div class="item-wrap">
    107. <p class="label">Skills:</p>
    108. C / C + +, data structures, software engineering, operating systems, computer networks, databases, compiler
    109. theory, computer architecture, Microcomputer Principle and Interface Technology, Computer English, Java,
    110. ASP, etc.
    111. </div>
    112. </div>
    113. </div>
    114. <nz-divider></nz-divider>
    115. <p class="title">Contacts</p>
    116. <div nz-row>
    117. <div nz-col nzSpan="12">
    118. <div class="item-wrap">
    119. <p class="label">Email:</p>
    120. AntDesign@example.com
    121. </div>
    122. </div>
    123. <div nz-col nzSpan="12">
    124. <div class="item-wrap">
    125. <p class="label">Phone Number:</p>
    126. +86 181 0000 0000
    127. </div>
    128. </div>
    129. </div>
    130. <div nz-row>
    131. <div nz-col nzSpan="24">
    132. <div class="item-wrap">
    133. <p class="label">Github:</p>
    134. <a href="https://github.com/NG-ZORRO/ng-zorro-antd" target="_blank">github.com/NG-ZORRO/ng-zorro-antd</a>
    135. </div>
    136. </div>
    137. </div>
    138. </nz-drawer>
    139. `,
    140. styles: [
    141. `
    142. .title {
    143. font-size: 16px;
    144. color: rgba(0, 0, 0, 0.85);
    145. line-height: 24px;
    146. display: block;
    147. margin-bottom: 16px;
    148. }
    149. .item-wrap {
    150. font-size: 14px;
    151. line-height: 22px;
    152. margin-bottom: 7px;
    153. color: rgba(0, 0, 0, 0.65);
    154. }
    155. .label {
    156. margin-right: 8px;
    157. display: inline-block;
    158. color: rgba(0, 0, 0, 0.85);
    159. }
    160. ]
    161. })
    162. export class NzDemoDrawerUserProfileComponent {
    163. data = [
    164. {
    165. name: 'Lily'
    166. },
    167. {
    168. name: 'Lily'
    169. }
    170. ];
    171. visible = false;
    172. open(): void {
    173. this.visible = true;
    174. }
    175. close(): void {
    176. this.visible = false;
    177. }

    服务方式创建

    Drawer 的 service 用法,示例中演示了用户自定义模板、自定义component。

    方法

    属性