Всплывающее окно для каждой строки kendo-grid в angular 6

#angular #kendo-ui #popup

#angular #kendo-пользовательский интерфейс #всплывающее окно

Вопрос:

Я работаю с kendo grid и Angular 6. в каждой строке есть кнопка действия в столбце kendo, которая является (предварительным просмотром) для каждой строки. При нажатии на него во всплывающем окне отображается только эта информация о строке. Я использовал это руководство для создания всплывающего окна

https://www.telerik.com/kendo-angular-ui/components/popup/

и это сработало, если только, если я не нажму кнопку «Показать» для любой строки, все кнопки «Показать» откроют всплывающие окна, и то же самое для кнопки «Закрыть», закроет все всплывающие окна.

     <kendo-grid-column field="tests" title="Actions" width="120" [locked]="true">
      <ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">            
        <div>
          <div class="example-config">
            <button #anchor (click)="onToggle()" class="btn" class="btn btn-primary btn-lg gradient">{{toggleText}}</button>
          </div>
          <kendo-popup [anchor]="anchor" *ngIf="show" [animate]="animate">
<!--(anchorViewportLeave)="show = false"-->
            <div class='content'>
                   <--!content here-->
             </div>
  

Ответ №1:

В настоящее время вы отслеживаете активное состояние для всех всплывающих окон в одной переменной с именем show . Что приводит к одновременному отображению / скрытию всех всплывающих окон.

Но вам нужно отслеживать активное состояние для каждой строки / элемента данных.

Отслеживание для каждого элемента данных

Одним из вариантов было бы отслеживать активное состояние всплывающего окна rows в самом DataItem.

 <button #anchor (click)="dataItem.show = !dataItem.show" class="btn btn-primary">Preview</button>

<kendo-popup [anchor]="anchor" *ngIf="dataItem.show" [animate]="animate">
     <-- content here -->
</kendo-popup>
  

Отслеживание по RowIndex

В качестве альтернативы можно отслеживать активное состояние в глобальной переменной на основе rowIndex . Которое предоставляется kendoGridCellTemplate .

 <button #anchor (click)="show[rowIndex] = !show[rowIndex]" class="btn btn-primary">Preview</button>

<kendo-popup [anchor]="anchor" *ngIf="show[rowIndex]" [animate]="animate">
     <-- content here -->
</kendo-popup>