Как программно развернуть панель расширения матов, которая была добавлена ​​динамически? - PullRequest
2 голосов
/ 10 июня 2019

Я пытаюсь отобразить несколько панелей расширения Mat в аккордеоне Mat с помощью * ngFor.Мне нужно добавить новую панель расширения мата по нажатию кнопки, которую я могу сделать.Я также обязан расширять (открывать) эту недавно добавленную панель расширения одним нажатием кнопки, и это то, чего я не смог достичь.Пожалуйста, помогите.

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);
  }
}
<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>

1 Ответ

0 голосов
/ 10 июня 2019

Я рекомендую изменить модель данных. таким образом, вы можете сохранить состояние открытий и закрытий плюс число на элемент.

item = [
  {
    number: 1, 
    open: false
  },
  {
    number: 2,
    open: true
  }
];

  AddNewRow() {
     this.item.push({number: 3, open: true});
   }
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...