tag route page dynamically change based angular angular2-animation

route - title angular



¿Puedes mover tus animaciones a un archivo externo en Angular2? (4)

La anotación @Component nos proporciona una propiedad de animations . Esto se puede usar para definir una lista de triggers con una gran cantidad de propiedades de state y transition .

Cuando agrega múltiples animaciones a un componente, esta lista puede llegar a ser bastante larga. También sería muy bueno usar algunas animaciones en otros componentes. Tener que ponerlos directamente en cada componente parece tedioso y repetitivo, además de violar el principio DRY.

También puede definir las propiedades de plantilla y estilo en su componente, pero aquí tiene la opción de proporcionar un templateUrl y styleUrls en styleUrls lugar. Parece que no puedo encontrar una propiedad animationUrls , ¿me falta algo, hay alguna forma de hacer esto?


Aquí hay otro ejemplo que aparece en la animación en Angular 4 que utilizo para animar rutas.

// import the required animation functions from the angular animations module import { trigger, state, animate, transition, style } from ''@angular/animations'';   export const fadeInAnimation =     // trigger name for attaching this animation to an element using the [@triggerName] syntax     trigger(''fadeInAnimation'', [           // route ''enter'' transition         transition('':enter'', [               // css styles at start of transition             style({ opacity: 0 }),               // animation and styles at end of transition             animate(''.3s'', style({ opacity: 1 }))         ]),     ]);

Y un componente con la transición adjunta.

import { Component } from ''@angular/core'';   // import fade in animation import { fadeInAnimation } from ''../_animations/index'';   @Component({     moduleId: module.id.toString(),     templateUrl: ''home.component.html'',       // make fade in animation available to this component     animations: [fadeInAnimation],       // attach the fade in animation to the host (root) element of this component     host: { ''[@fadeInAnimation]'': '''' } })   export class HomeComponent { }

Más detalles y una demostración en vivo en este post.


Ciertamente, usted y los caballeros lo han hecho en algunos de sus ejemplos de reposiciones en github. Toma lo siguiente:

ruta_animaciones.ts

import { trigger, animate, style, transition } from ''@angular/core''; var startingStyles = (styles) => { styles[''position''] = ''fixed''; styles[''top''] = 0; styles[''left''] = 0; styles[''right''] = 0; styles[''height''] = ''100%''; return styles; } export default function(name) { return trigger(name, [ transition(''void => *'', [ style(startingStyles({ transform: ''translateX(100%)'' })), animate(''0.5s ease-out'', style({ transform: ''translateX(0%)''})) ]), transition(''* => void'', [ style(startingStyles({ transform: ''translateX(0%)'' })), animate(''0.5s ease-in'', style({ transform: ''translateX(-100%)''})) ]) ]); }

Que luego se importa en un componente como el siguiente:

import {default as routerAnimations} from ''../route_animations'';

Y luego se llama así en la animación Param al inicializar el componente:

animations: [routerAnimations(''route'')],

Eche un vistazo a esto usted mismo para tener una mejor idea, pero espero que esto ayude. https://github.com/matsko/ng2eu-2016-code/blob/master

Felicitaciones a matsko.


Claro que es posible. Puede crear, por ejemplo, animations.ts y dejar que exporte todo tipo de constantes de animación:

export const PRETTY_ANIMATION = trigger(''heroState'', [ state(''inactive'', style({ backgroundColor: ''#eee'', transform: ''scale(1)'' })), state(''active'', style({ backgroundColor: ''#cfd8dc'', transform: ''scale(1.1)'' })), transition(''inactive => active'', animate(''100ms ease-in'')), transition(''active => inactive'', animate(''100ms ease-out'')) ])

y en tu componente puedes importar esta animación usando la declaración de import :

import {PRETTY_ANIMATION} from ''animations'';

y aplícalo a tu componente:

@Component({ selector : `...` animations : [PRETTY_ANIMATION] })


Seguro que puede. Solo puede declarar la animación en un archivo diferente y luego importarla donde la necesite.

animaciones.ts

export const animation = trigger(...)

componente.ts

import { animation } from ''./animations'' @Component({ animations: [ animation ] })

O si desea que sea configurable, puede exportar una función. Por ejemplo, eche un vistazo al colapso de la interfaz de usuario . Esta es una animación reutilizable (y configurable).

colapso.ts

export function Collapse(duration: number = 300) { return trigger(''collapse'', [ ... ]) }

Luego en tus componentes, solo usa

import { Collapse } from ''./collapse'' @Component({ animations: [ Collapse(300) ], template: ` <div @collapse="collapsed ? ''true'' : ''false''"> </div> ` }) class MyComponent {}