Angular 更改或添加行时设置行动画

Angular 更改或添加行时设置行动画,angular,angular-material,angular-animations,Angular,Angular Material,Angular Animations,我试图在添加或更改mat表中的行时设置其动画。我有以下动画: import { animate, keyframes, sequence, style, transition, trigger } from '@angular/animations'; export const rowUpdate = trigger('rowUpdate', [ transition('void => *', animate('5000ms', keyframes([ style

我试图在添加或更改mat表中的行时设置其动画。我有以下动画:

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

export const rowUpdate =
  trigger('rowUpdate', [
    transition('void => *', animate('5000ms', keyframes([
      style({backgroundColor: 'initial', boxShadow: 'none', offset: 0} ),
      style({backgroundColor: 'red', boxShadow: '0 0 5px red', offset: 0.1} ),
      style({backgroundColor: 'initial', boxShadow: 'none', offset: 1} ),
    ])))
  ]);
我称之为HTML:

<tr mat-row *matRowDef="let row; columns: displayedColumns;" [@rowUpdate]="">

当我更改或更新一行时,它会正常工作,问题是我可以隐藏/显示列,当我添加一个新列时,所有表都会高亮显示,我希望这只在我添加/更改行时发生,而不是在我添加新列时发生

你知道我该怎么控制吗

编辑1:我已尝试此解决方案以:


但我还有一个问题,当我对表格排序时,动画再次出现,我不想要它。我已尝试删除该类,但无法删除。

请参阅中的
trackBy
。它允许告诉mat table哪些行已经被删除drawn@Andrei我怎么能这样做?我从来没有在你的组件上使用过这个trackBy.write
trackByItem(index:number,item:any){return item;}
和bind
@Andrei是的,我知道这一点,但是当我添加一个新列时,我如何防止动画呢?我测量了动画的发生,因为angular不知道它是新的还是旧的。如果这不是需要进一步调查的原因,请参阅中的
trackBy
。它允许告诉mat table哪些行已经被删除drawn@Andrei我怎么能这样做?我从来没有在你的组件上使用过这个trackBy.write
trackByItem(index:number,item:any){return item;}
和bind
@Andrei是的,我知道这一点,但是当我添加一个新列时,我如何防止动画呢?我测量了动画的发生,因为angular不知道它是新的还是旧的。如果这不是需要进一步调查的原因