Угловая анимация в строке таблицы не применяется ко всем строкам

У меня есть стандартная матовая таблица, и я применил анимацию из angular/animation API, чтобы строки скользили слева при загрузке таблицы.

таблица.html

    <table mat-table [dataSource] = "dataSource" class = "mat-elevation-z8" *ngIf = "showTable === true" 
  matSort
  matSortStart = "asc"
  matSortDirection = "asc"
  matSortActive = "brandName">

  <ng-container matColumnDef = "brandName">
    <th mat-header-cell *matHeaderCellDef mat-sort-header><h5>Brand</h5></th>
    <td mat-cell *matCellDef = "let row">{{row.brandName}}</td>
  </ng-container>

  <ng-container matColumnDef = "name">
    <th mat-header-cell *matHeaderCellDef mat-sort-header><h5>Account Number</h5></th>
    <td mat-cell *matCellDef = "let row">{{row.name}}</td>
  </ng-container>

  <tr mat-header-row @rowsAnimation *matHeaderRowDef = "displayedColumns"></tr>
  <tr mat-row @rowsAnimation *matRowDef = "let row; columns: displayedColumns;"></tr>
</table>

таблица.ts

@Component({
 selector: 'brand-account',
 templateUrl: 'brand-account.component.html',
 styleUrls: ['brand-account.component.scss'],
 animations: [rowsAnimation],
})
export class BpDiscountsComponent implements OnInit {

 displayedColumns: string[] = ['tradeAgreementGroupName', 'groupDiscount', 'definition'];
 dataSource: MatTableDataSource<TradeAgreement> = new 
 MatTableDataSource<TradeAgreement>();

private sort: MatSort;
@ViewChild(MatSort) set matPaginator(st: MatSort) {
 this.sort = st;
 this.setDataSourceAttributes();
}

setDataSourceAttributes() {
  this.dataSource.sort = this.sort;
}

rowsAnimation.ts

import { trigger, sequence, animate, transition, style } from '@angular/animations';

export const rowsAnimation = 
trigger('rowsAnimation', [
  transition('void => *', [
    style({ height: '*', opacity: '0', transform: 'translateX(-550px)', 'box-shadow': 'none' }),
    sequence([
      animate(".25s ease", style({ height: '*', opacity: '.2', transform: 'translateX(0)', 'box-shadow': 'none'  })),
      animate(".25s ease", style({ height: '*', opacity: 1, transform: 'translateX(0)' }))
    ])
  ])
]);

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

Любая помощь или предложения будут высоко оценены.

Обновлять Похоже, что причиной проблемы является матовая сортировка, но я не уверен, как это исправить. Файлы обновляются с помощью моего кода сортировки. Должен ли я выбирать между сортировкой и анимацией для моих строк при загрузке таблицы?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
1 492
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Покопавшись в нем, я обнаружил, что моя проблема заключалась в том, когда я устанавливал MatSort и когда моя таблица матов отображалась в DOM (у меня есть * ngIf в таблице). Решение до боли очевидно, но MatSort не может быть установлен и назначен моему dataSource.sort до тех пор, пока таблица не будет визуализирована или, в моем случае, showTable === true.

  1. MatSort установлен на локальную переменную в ViewChild
  2. Mat Table должен быть отрендерен
  3. данные источника данных
  4. локальный matSort, назначенный datasource.sort
  5. Анимация на работает отлично!

Другие вопросы по теме