首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式扩展一个动态添加的mat-expansion-panel?

如何以编程方式扩展一个动态添加的mat-expansion-panel?
EN

Stack Overflow用户
提问于 2019-06-11 04:08:44
回答 3查看 8.5K关注 0票数 6

我正在尝试使用*ngFor在Mat-accordian中显示多个Mat-expansion-panel。我需要添加一个新的垫-扩展-面板上的一个按钮,我能够做到。我还需要在点击按钮时展开(打开)这个新添加的扩展面板,而这是我无法实现的。请帮帮忙。

Stackblitz - https://stackblitz.com/edit/angular-fh5vu1-g6phe6?file=app%2Fexpansion-steps-example.ts

代码语言:javascript
复制
export class ExpansionStepsExample { 
  items: number[] = [1,2,3];

  AddNewRow() {
    this.items.push(4);
  }
}
代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-11 04:46:02

我建议更改您的数据模型。通过这种方式,您可以存储打开和关闭的状态,以及每个项目的编号。

代码语言:javascript
复制
item = [
  {
    number: 1, 
    open: false
  },
  {
    number: 2,
    open: true
  }
];

  AddNewRow() {
     this.item.push({number: 3, open: true});
   }
代码语言:javascript
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2020-05-09 13:47:56

您可以访问Material Expansion Panel元素,并调用open()和close()方法。

代码语言:javascript
复制
import { Component, OnInit, ViewChild } from '@angular/core';
import { MatExpansionPanel } from '@angular/material';
...
@ViewChild(MatExpansionPanel, {static: true}) matExpansionPanelElement: MatExpansionPanel;
...
selectItem() {
    this.matExpansionPanelElement.close(); //open()
}
代码语言:javascript
复制
<mat-accordion>
    <mat-expansion-panel #matExpansionPanel>
    ...
    </mat-expansion-panel>
</mat-accordion>

票数 5
EN

Stack Overflow用户

发布于 2020-09-26 19:21:40

对@sem针对Angular 9+用法的答案做了一个小小的更改: component.ts

代码语言:javascript
复制
@ViewChild('matExpansionPanel', { static: true }) matExpansionPanelElement: MatExpansionPanel;

component.html

代码语言:javascript
复制
<mat-expansion-panel #matExpansionPanel>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56532915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档