Accordion手风琴

可以折叠/展开的内容区域。

规则

  • 对复杂区域进行分组和隐藏。
  • 通常,一次只允许单个内容区域展开;特殊情况,多个内容区域可以同时展开。

代码演示

基本用法

最简单的用法。

  1. import { Component, ViewChild, AfterViewInit, OnInit } from '@angular/core';
  2. @Component({
  3. selector: 'demo-accordion-basic',
  4. template: `
  5. <Accordion [defaultActiveKey]="'0'" [activeKey]="activeKey" (onChange)="onChange($event)">
  6. <AccordionPanel
  7. *ngFor="let item of accordions; let i = index"
  8. [key]="i"
  9. [header]="item.title"
  10. [disabled]="item.inactive"
  11. >
  12. <List className="my-list">
  13. <ListItem *ngFor="let content of item.child">
  14. {{ content }}
  15. </ListItem>
  16. </List>
  17. </AccordionPanel>
  18. </Accordion>
  19. <ng-template #title1>
  20. <div>Title 1</div>
  21. </ng-template>
  22. <ng-template #title2>
  23. <img src="/assets/img/logo.svg" style="width:36px"/>
  24. </ng-template>
  25. `
  26. })
  27. export class DemoAccordionBasicComponent implements OnInit {
  28. @ViewChild('title1', { static: true }) title1: ViewChild;
  29. @ViewChild('title2', { static: true }) title2: ViewChild;
  30. accordions: Array<any> = [];
  31. activeKey = [0, 1];
  32. onChange(event) {
  33. console.log(event);
  34. }
  35. ngOnInit() {
  36. this.accordions = [
  37. { title: this.title1, child: ['content 1', 'content 1', 'content 1'] },
  38. {
  39. title: this.title2,
  40. child: ['content 2', 'content 2', 'content 2'],
  41. inactive: false
  42. },
  43. { title: 'Title 3', child: ['content 3', 'content 3', 'content 3'], inactive: true }
  44. ];
  45. }
  46. }

手风琴模式

  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'demo-accordion-accordion',
  4. template: `
  5. <Accordion [accordion]="true" [defaultActiveKey]="'0'" [activeKey]="activeKey" (onChange)="onChange($event)">
  6. <AccordionPanel
  7. *ngFor="let item of accordions; let i = index"
  8. [key]="i"
  9. [header]="item.title"
  10. [disabled]="item.inactive"
  11. >
  12. <List className="my-list">
  13. <ListItem *ngFor="let content of item.child">
  14. {{ content }}
  15. </ListItem>
  16. </List>
  17. </AccordionPanel>
  18. </Accordion>
  19. `
  20. })
  21. export class DemoAccordionAccordionComponent {
  22. activeKey = [1];
  23. accordions: Array<any> = [
  24. { title: 'Title 1', child: ['content 1', 'content 1', 'content 1'] },
  25. { title: 'Title 2', child: ['content 2', 'content 2', 'content 2'] },
  26. { title: 'Title 3', child: ['content 3', 'content 3', 'content 3'] }
  27. ];
  28. onChange(event) {
  29. console.log(event);
  30. }
  31. }

Accordion手风琴 - 图1

API

Accordion

参数说明类型默认值
[activeKey]当前激活 tab 面板的 key, accordion模式下默认第一个元素Array | string-
[defaultActiveKey]初始化选中面板的 keystring-
[accordion]手风琴模式booleanfalse
(onChange)切换面板的回调EventEmitter<string>-

AccordionPanel

参数说明类型默认值
[key]对应 activeKeystring-
[header]面板头内容string | TemplateRef-

注意: 目前暂不支持嵌套使用