- Drawer抽屉
- 规则
- 代码演示
- API
Drawer抽屉
用于在屏幕边缘显示应用导航等内容的面板。
规则
- 是 Android 推荐的导航方式,常见于该平台应用。
代码演示
基本用法
遮罩层模式
import { Component } from '@angular/core';@Component({selector: 'demo-drawer-basic',template: `<div><Navbar [icon]="icon" (onLeftClick)="onOpenChange($event)">Basic</Navbar><Drawer class="my-drawer"[ngStyle]="{minHeight: this.height+'px'}"[contentStyle]="{ color: '#A6A6A6', textAlign: 'center', paddingTop: '42px' }"[enableDragHandle]="true"[sidebar]="sidebar"[open]="this.state.open"(onOpenChange)="onOpenChange($event)">Click upper-left corner</Drawer></div><ng-template #icon><Icon type="ellipsis"></Icon></ng-template><ng-template #sidebar><List><ListItem [multipleLine]="true"[thumb]="'https://zos.alipayobjects.com/rmsportal/eOZidTabPoEbPeU.png'">Category</ListItem><ListItem *ngFor="let num of this.nums ; let i = index"[thumb]="'https://zos.alipayobjects.com/rmsportal/eOZidTabPoEbPeU.png'">Category{{i + 1}}</ListItem></List></ng-template>`,styles: [`/deep/ .my-drawer {position: relative;overflow: auto;-webkit-overflow-scrolling: touch;}/deep/ .my-drawer .am-drawer-sidebar {background-color: #fff;overflow: auto;-webkit-overflow-scrolling: touch;}/deep/ .my-drawer .am-drawer-sidebar .am-list {width: 300px;padding: 0;}`]})export class DemoDrawerBasicComponent {height: number = document.documentElement.clientHeight;nums: Array<number> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];state = {open: true};constructor() {}onOpenChange(event) {console.log(event);this.state.open = !this.state.open;}}
嵌入文档模式
嵌入到文档流中
import { Component } from '@angular/core';@Component({selector: 'demo-drawer-dock',template: `<div><Navbar [icon]="icon" (onLeftClick)="onDockedChange($event)">Docked in document</Navbar><Drawer class="my-drawer"[ngStyle]="{minHeight: this.height+'px'}"[contentStyle]="{ color: '#A6A6A6', textAlign: 'center', paddingTop: '42px' }"[sidebarStyle]="{ border: '1px solid #ddd' }"[sidebar]="sidebar"[enableDragHandle]="false"[docked]="this.state.docked"(onOpenChange)="onDockedChange($event)">Click upper-left corner</Drawer></div><ng-template #icon><Icon type="ellipsis"></Icon></ng-template><ng-template #sidebar><List><ListItem [multipleLine]="true"[thumb]="'https://zos.alipayobjects.com/rmsportal/eOZidTabPoEbPeU.png'">Category</ListItem><ListItem *ngFor="let num of this.nums ; let i = index"[thumb]="'https://zos.alipayobjects.com/rmsportal/eOZidTabPoEbPeU.png'">Category{{i + 1}}</ListItem></List></ng-template>`,styles: [`/deep/ .my-drawer {position: relative;overflow: auto;-webkit-overflow-scrolling: touch;}/deep/ .my-drawer .am-drawer-sidebar {background-color: #fff;overflow: auto;-webkit-overflow-scrolling: touch;}/deep/ .my-drawer .am-drawer-sidebar .am-list {width: 300px;padding: 0;}`]})export class DemoDrawerDockComponent {height: number = document.documentElement.clientHeight;nums: Array<number> = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];state = {docked: false};constructor() {}onDockedChange = event => {console.log('dockedChanged', event);this.state.docked = !this.state.docked;};}

API
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| sidebar | 抽屉里的内容 | ng-template | - |
| onOpenChange | open 状态切换时调用 | (open: bool): void | - |
| open | 开关状态 | Boolean | false |
| position | 抽屉所在位置 | String | 'left', enum{'left', 'right', 'top', 'bottom'} |
| sidebarStyle | - | Object | {} |
| contentStyle | - | Object | {} |
| overlayStyle | - | Object | {} |
| dragHandleStyle | - | Object | {} |
| touch | 是否开启触摸手势 | Boolean | true |
| transitions | 是否开启动画 | Boolean | true |
| docked | 是否嵌入到正常文档流里 | Boolean | false |
| enableDragHandle | 是否启用 dragHandle | Boolean | false |
| dragToggleDistance | 打开关闭抽屉时距 sidebar 的拖动距离 | Number | 30 |
