Панели расширения угловых материалов: как изначально расширяться, но затем позволить пользователю расширяться / складываться по своему усмотрению - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть панель расширения, которая содержит список данных.Когда компонент загружается, я хочу развернуть панель, если длина его данных равна 0, и свернуть, если длина его данных больше 0.

После инициализации я хочу, чтобы панель расширялась толькоили свернуть, если пользователь нажимает на него.Поэтому, если длина данных панели изменяется с 0 на 1, я не хочу, чтобы панель затем свернулась, я хочу, чтобы она оставалась открытой.Проблема в том, что когда я использую [расширенный] ввод панели расширения, она продолжает проверять условие, поэтому, когда длина данных изменяется, она расширяется или сворачивается, даже если пользователь не щелкнул по ней.

<mat-expansion-panel [expanded]="!item.data.length">
  <mat-expansion-panel-header>
    <mat-panel-title>
      Item with data
    </mat-panel-title>
  </mat-expansion-panel-header>
  <div *ngFor="let data of item.data">
    {{data.name}}
  </div>
  <button (click)="addDataToItem()">ADD DATA</button>
</mat-expansion-panel>

Желаемые результаты: Панель расширения первоначально раскрывается, если item.data.length равно 0, и первоначально свернута, если item.data.length больше 0. Затем, если пользователь нажимает кнопку ADD DATA, расширениепанель остается открытой.

Фактические результаты: Панель расширения первоначально раскрывается, если item.data.length равно 0, и сворачивается, если она больше 0. Но если пользователь нажимает ADD DATA,панель

закрывается, потому что длина больше 0.

Вот пример поведения.

Обратите внимание, как панель изначально расширяется, потому что длина равна 0, но затем, когда вы нажимаете ADD DATA, она сворачивается, потому что длина равна 1. Я бы хотел, чтобы она оставалась открытой.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Вы можете сделать логическое значение в Компоненте и установить его в item.data.length === 0 и просто проверить это в шаблоне.

public expanded: boolean = this.item.data.length === 0;

<mat-expansion-panel [expanded]="expanded">

edit: испортила ссылку

https://angular -esfqzh.stackblitz.io

0 голосов
/ 05 апреля 2019

Попробуйте изменить это:

<mat-expansion-panel [expanded]="!item.data.length">

на:

<mat-expansion-panel [expanded]="item.data.length">

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...