ada*_*rsh 5 angular-material angular
我正在尝试使用 *ngFor 在 Mat-accordian 中显示多个 Mat-expansion-panel。我需要点击一个我能够做到的按钮来添加一个新的垫子扩展面板。我还需要在单击按钮时展开(打开)这个新添加的扩展面板,这是我无法实现的。请帮忙。
Stackblitz - https://stackblitz.com/edit/angular-fh5vu1-g6phe6?file=app%2Fexpansion-steps-example.ts
export class ExpansionStepsExample {
items: number[] = [1,2,3];
AddNewRow() {
this.items.push(4);
}
}
Run Code Online (Sandbox Code Playgroud)
<mat-accordion class="example-headers-align">
<mat-expansion-panel *ngFor="let item of items;">
<mat-expansion-panel-header>
<mat-panel-title> {{item}} </mat-panel-title>
</mat-expansion-panel-header>
{{item}}
</mat-expansion-panel>
</mat-accordion>
<button (click)="AddNewRow()" value="Add New"> Add New </button>
Run Code Online (Sandbox Code Playgroud)
小智 5
我建议更改您的数据模型。通过这种方式,您可以存储打开和关闭的状态以及每个项目的数量。
item = [
{
number: 1,
open: false
},
{
number: 2,
open: true
}
];
AddNewRow() {
this.item.push({number: 3, open: true});
}
Run Code Online (Sandbox Code Playgroud)
<mat-accordion class="example-headers-align" multi="true">
<mat-expansion-panel *ngFor="let item of items;" [expanded]="item.open" >
<mat-expansion-panel-header>
<mat-panel-title> {{item. number}} </mat-panel-title>
</mat-expansion-panel-header>
{{item.number }}
</mat-expansion-panel>
</mat-accordion>
<button (click)="AddNewRow()" value="Add New"> Add New </button>
Run Code Online (Sandbox Code Playgroud)
您可以访问 Material Expansion Panel 元素,并调用 open() 和 close() 方法。
import { Component, OnInit, ViewChild } from '@angular/core';
import { MatExpansionPanel } from '@angular/material';
...
@ViewChild(MatExpansionPanel, {static: true}) matExpansionPanelElement: MatExpansionPanel;
...
selectItem() {
this.matExpansionPanelElement.close(); //open()
}Run Code Online (Sandbox Code Playgroud)
<mat-accordion>
<mat-expansion-panel #matExpansionPanel>
...
</mat-expansion-panel>
</mat-accordion>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7401 次 |
| 最近记录: |