The @Component
annotation provides us with an animations
property. This can be used to define a list of triggers
each with a lot of state
and transition
properties.
When you add multiple animations to a component, this list can become pretty long. Also some animations would be really nice to use in other components as well. Having to put them directly in each component seems tedious and is repetitive - plus it violates the DRY principle.
You can define the template and styles properties on your component as well, but here you have the option of providing a templateUrl
and styleUrls
instead. I can't seem to find an animationUrls
property - am i missing something - is there a way to do this?
The keyframes() function in Angular allows you to specify multiple interim styles within a single transition, with an optional offset to define the point in the animation where each style change should occur.
To create a staggered animation, use multiple Animation objects. One AnimationController controls all of the Animation s. Each Animation object specifies the animation during an Interval .
Sure you can. You can just declare the animation in a different file, then import it where you need it
animations.ts
export const animation = trigger(...)
component.ts
import { animation } from './animations'
@Component({
animations: [ animation ]
})
Or if you want to make it configurable, you can export a function. For example, take a look at the Fuel-UI Collapse. This is a reusable (and configurable) animation
collapse.ts
export function Collapse(duration: number = 300) {
return trigger('collapse', [
...
])
}
Then in your components, just use
import { Collapse } from './collapse'
@Component({
animations: [ Collapse(300) ],
template: `
<div @collapse="collapsed ? 'true' : 'false'">
</div>
`
})
class MyComponent {}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With