如何使用 Angular2 中的基础组件将动画应用于多个组件?

San*_*eph 5 javascript inheritance animation angularjs

在我的应用程序中,当组件使用路由从菜单加载时,我想使用一些动画。我能够成功地使用角度动画来做到这一点。我必须在单个组件中应用动画才能实现这一点。我需要知道是否有更好的方法将动画应用于一组组件或从特定基类继承的组件?

目前我已经应用了我的动画,

import { Component, OnInit } from '@angular/core';
import { routerTransition } from "../animations/animations";

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css'],
  animations: [routerTransition()],
  host: {'[@routerTransition]': ''}
})
export class BaseComponentComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}
Run Code Online (Sandbox Code Playgroud)

动画代码,

import {trigger, state, animate, style, transition} from '@angular/core';

export function routerTransition() {
  return slideToLeft();
}

function slideToLeft() {
  return trigger('routerTransition', [
    state('void', style({position:'fixed', width:'100%'}) ),
    state('*', style({position:'fixed', width:'100%'}) ),
    transition(':enter', [  // before 2.1: transition('void => *', [
      style({transform: 'translateX(100%)'}),
      animate('0.5s ease-in-out', style({transform: 'translateX(0%)'}))
    ]),
    transition(':leave', [  // before 2.1: transition('* => void', [
      style({transform: 'translateX(0%)'}),
      animate('0.5s ease-in-out', style({transform: 'translateX(-100%)'}))
    ])
  ]);
}
Run Code Online (Sandbox Code Playgroud)

我试过的:

我尝试创建一个基础组件,在那里应用动画属性,并在其他需要的组件中扩展基础组件。动画在此之后停止工作。

请让我知道我们是否可以重用动画而不将其应用于单个组件。

fr0*_*fr0 1

从 4.2 版本开始,Angular 支持通过动画 DSL 中的更新功能对query()多个元素进行动画处理。stagger()

本文介绍了新功能:https://www.yearofmoo.com/2017/06/new-wave-of-animation-features.html