Есть пара вариантов для достижения этого эффекта.Во-первых, к компоненту добавьте:
@Component({
..
animations: [rowsAnimation],
})
Затем создайте анимацию с постепенным перемещением слева направо.
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('.35s ease', style({
'height': '*',
'opacity': '.2',
'transform': 'translateX(0)',
'box-shadow': 'none',
})),
animate('.35s ease', style({
height: '*',
opacity: 1,
transform: 'translateX(0)',
})),
]),
])
]);
Затем добавьте анимацию в html.
<div class="row"
*ngIf="posts">
<ng-container *ngFor="let post of posts | conteudoFilter:nivel; ">
<div id="feed-{{post.id}}"
(click)="getFeed(post)"
[@rowsAnimation]=""
class="feed card col s12">
<img src="{{post.thumb}}" alt="" class="responsive-img">
<!-- <div class="">{{post.descricao | titlecase}}</div> -->
</div>
</ng-container>
</div>
Анимация установлена на void => *
, это означает, что она появится при добавлении новой строки в DOM.Последний шаг - добавить эти строки одну за другой.Ниже приведен простой пример, если анимация работает:
addRow() {
this.posts.push({id: 1});
}
Анимация должна появиться.Затем вам нужно вызвать его в свитке.