Drawer抽屉
- 当需要一个附加的面板来控制父窗体内容,这个面板在需要时呼出。比如,控制界面展示样式,往界面中添加内容。
- 当需要在当前任务流中插入临时任务,创建或预览附加内容。比如展示协议条款,创建子对象。
想要了解更多关于单独引入组件的内容,可以在快速上手页面进行查看。
基础抽屉,点击触发按钮抽屉从右滑出,点击遮罩区关闭
@Component({
selector: 'nz-demo-drawer-basic-right',
template: `
<button nz-button nzType="primary" (click)="open()">Open</button>
<nz-drawer
[nzClosable]="false"
[nzVisible]="visible"
nzPlacement="right"
nzTitle="Basic Drawer"
(nzOnClose)="close()"
>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</nz-drawer>
`
})
export class NzDemoDrawerBasicRightComponent {
visible = false;
open(): void {
this.visible = true;
}
close(): void {
this.visible = false;
}
}
用于承载编辑相关操作,需要点击关闭按钮关闭。
在抽屉内打开新的抽屉,用以解决多分支任务的复杂状况。
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-drawer-multi-level-drawer',
template: `
<button nz-button nzType="primary" (click)="open()">New Cookbook</button>
<nz-drawer
[nzClosable]="false"
[nzOffsetX]="childrenVisible ? 180 : 0"
[nzWidth]="320"
[nzVisible]="visible"
nzTitle="Cookbook"
(nzOnClose)="close()"
>
<form nz-form>
<div nz-row>
<div nz-col nzSpan="24">
<nz-form-item>
<nz-form-label>Name</nz-form-label>
<nz-form-control>
<input nz-input placeholder="please enter cookbook name" />
</nz-form-control>
</nz-form-item>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24">
<nz-form-item>
<nz-form-label>Food</nz-form-label>
<nz-form-control>
<nz-tag>potato</nz-tag>
<nz-tag>eggplant</nz-tag>
<nz-tag (click)="openChildren()">+</nz-tag>
</nz-form-control>
</nz-form-item>
</div>
</div>
</form>
<div class="footer">
<button type="button" (click)="close()" class="ant-btn" style="margin-right: 8px;"><span>Cancel</span></button>
<button type="button" (click)="close()" class="ant-btn ant-btn-primary"><span>Submit</span></button>
</div>
<nz-drawer [nzClosable]="false" [nzVisible]="childrenVisible" nzTitle="Food" (nzOnClose)="closeChildren()">
<nz-list [nzDataSource]="vegetables" [nzRenderItem]="item">
<ng-template #item let-item>
<nz-list-item [nzContent]="item"></nz-list-item>
</ng-template>
</nz-list>
</nz-drawer>
</nz-drawer>
`,
styles: [
`
.footer {
position: absolute;
bottom: 0px;
width: 100%;
border-top: 1px solid rgb(232, 232, 232);
padding: 10px 16px;
text-align: right;
left: 0px;
background: #fff;
`
]
})
export class NzDemoDrawerMultiLevelDrawerComponent {
visible = false;
childrenVisible = false;
vegetables = ['asparagus', 'bamboo', 'potato', 'carrot', 'cilantro', 'potato', 'eggplant'];
open(): void {
this.visible = true;
}
close(): void {
this.visible = false;
}
openChildren(): void {
this.childrenVisible = true;
}
closeChildren(): void {
this.childrenVisible = false;
}
}
自定义位置,点击触发按钮抽屉从相应的位置滑出,点击遮罩区关闭
需要快速预览对象概要时使用,点击遮罩区关闭。
import { Component } from '@angular/core';
@Component({
selector: 'nz-demo-drawer-user-profile',
template: `
<nz-list [nzDataSource]="data" [nzRenderItem]="item" [nzItemLayout]="'horizontal'">
<ng-template #item let-item>
<nz-list-item [nzActions]="[viewAction]">
<ng-template #viewAction>
<a (click)="open()">View Profile</a>
</ng-template>
<nz-list-item-meta
[nzTitle]="nzTitle"
nzAvatar="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"
nzDescription="Progresser AFX"
>
<ng-template #nzTitle>
<a href="https://ng.ant.design">{{ item.name }}</a>
</ng-template>
</nz-list-item-meta>
</nz-list-item>
</ng-template>
<nz-drawer [nzVisible]="visible" [nzWidth]="640" [nzClosable]="false" (nzOnClose)="close()">
<p class="title" style=" margin-bottom: 24px;">User Profile</p>
<p class="title">Personal</p>
<div nz-row>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Full Name:</p>
Lily
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Account:</p>
AntDesign@example.com
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">City:</p>
HangZhou
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Country:</p>
China🇨🇳
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Birthday:</p>
February 2,1900
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Website:</p>
-
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24">
<div class="item-wrap">
<p class="label">Message:</p>
Make things as simple as possible but no simpler.
</div>
</div>
</div>
<nz-divider></nz-divider>
<p class="title">Company</p>
<div nz-row>
<div class="item-wrap">
<p class="label">Position:</p>
Programmer
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Responsibilities:</p>
Coding
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Department:</p>
AFX
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Supervisor:</p>
<a>Lin</a>
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24">
<div class="item-wrap">
<p class="label">Skills:</p>
C / C + +, data structures, software engineering, operating systems, computer networks, databases, compiler
theory, computer architecture, Microcomputer Principle and Interface Technology, Computer English, Java,
ASP, etc.
</div>
</div>
</div>
<nz-divider></nz-divider>
<p class="title">Contacts</p>
<div nz-row>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Email:</p>
AntDesign@example.com
</div>
</div>
<div nz-col nzSpan="12">
<div class="item-wrap">
<p class="label">Phone Number:</p>
+86 181 0000 0000
</div>
</div>
</div>
<div nz-row>
<div nz-col nzSpan="24">
<div class="item-wrap">
<p class="label">Github:</p>
<a href="https://github.com/NG-ZORRO/ng-zorro-antd" target="_blank">github.com/NG-ZORRO/ng-zorro-antd</a>
</div>
</div>
</div>
</nz-drawer>
`,
styles: [
`
.title {
font-size: 16px;
color: rgba(0, 0, 0, 0.85);
line-height: 24px;
display: block;
margin-bottom: 16px;
}
.item-wrap {
font-size: 14px;
line-height: 22px;
margin-bottom: 7px;
color: rgba(0, 0, 0, 0.65);
}
.label {
margin-right: 8px;
display: inline-block;
color: rgba(0, 0, 0, 0.85);
}
]
})
export class NzDemoDrawerUserProfileComponent {
data = [
{
name: 'Lily'
},
{
name: 'Lily'
}
];
visible = false;
open(): void {
this.visible = true;
}
close(): void {
this.visible = false;
}
Drawer 的 service 用法,示例中演示了用户自定义模板、自定义component。