Угловой мат материала — содержимое ячейки изменяется на основе другого значения мат-ячейки

#angular #angular-material

#угловой #angular-материал

Вопрос:

У меня возникла проблема со значением мат-ячейки для отображения содержимого на основе другого содержимого мат-ячейки. У меня есть столбец со статусом «готово», «сбой», «успех», который обновляется динамически. В другом столбце с именем «Действия», и он не из источника данных. Это просто html, который показывает кнопку, когда значение статуса равно «успех», и ничего не показывает, когда статус «сбой» или «готов»

Я пытался использовать *ngIf, но, похоже, не работает.

 <ng-container matColumnDef="actions">
  <mat-header-cell mat-header-cell *matHeaderCellDef [ngClass]="'columnActions'">Actions
  </mat-header-cell>
  <mat-cell mat-cell *matCellDef="let element" class="small-text" [ngClass]="'columnActions'">
  <button *ngIf="columnStatus == 'SUCCESS'" mat-icon-button style="padding-right:0px; padding-left:10px"><mat-icon>done</mat-icon>
  <button *ngIf="columnStatus == 'FAILED'" mat-icon-button style="padding-right:0px; padding-left:10px"><mat-icon>clear</mat-icon>
</mat-cell>
</ng-container>
  

Я ожидаю, что когда значение ячейки столбца «Статус» равно «УСПЕХ», значение ячейки столбца «Действие» будет отображать другой значок, выполненный для успеха, и очистить для сбоя. Динамическое изменение состояния столбца работает с файлом из [источника данных]. Это действие столбца, которое не изменится на основе значения в столбце состояния.

заранее спасибо

Комментарии:

1. добавьте также свои ts и файлы классов.

Ответ №1:

Я полагаю, что код columnStatus == 'SUCCESS' неверен в том смысле, что columnStatus он должен быть per element , не так ли? Кроме того, существует if ... else construct . Так что это должно быть так;

 <mat-cell mat-cell *matCellDef="let element" class="small-text" [ngClass]="'columnActions'">
  <button *ngIf="element.columnStatus === 'SUCCESS'; else otherStatus" mat-icon-button style="padding-right:0px; padding-left:10px">
      <mat-icon>done</mat-icon>
  </button>
  <ng-template #otherStatus>
      <button mat-icon-button style="padding-right:0px; padding-left:10px">
         <mat-icon>clear</mat-icon>
      </button>
  </ng-template>
</mat-cell>