animationهای قابلاستفاده مجدد
این مبحث نمونههایی از ساخت animationهای قابلاستفاده مجدد ارائه میکند.
ساخت animationهای قابلاستفاده مجدد
برای ساخت یک animation قابلاستفاده مجدد، با تابع animation() آن را در یک فایل .ts جداگانه تعریف کنید و این تعریف animation را در قالب یک متغیر export از نوع const اعلام کنید. سپس میتوانید با تابع useAnimation()، این animation را در componentهای برنامه import کرده و دوباره بهکار ببرید.
// #docplaster
// #docregion animation-const, trigger-const
import {animation, style, animate, trigger, transition, useAnimation} from '@angular/animations';
// #enddocregion trigger-const
export const transitionAnimation = animation([
style({
height: '{{ height }}',
opacity: '{{ opacity }}',
backgroundColor: '{{ backgroundColor }}',
}),
animate('{{ time }}'),
]);
// #enddocregion animation-const
// #docregion animation-example
export const sharedAnimation = animation([
style({
height: 0,
opacity: 1,
backgroundColor: 'red',
}),
animate('1s'),
]);
// #enddocregion animation-example
// #docregion trigger-const
export const triggerAnimation = trigger('openClose', [
transition('open => closed', [
useAnimation(transitionAnimation, {
params: {
height: 0,
opacity: 1,
backgroundColor: 'red',
time: '1s',
},
}),
]),
]);
// #enddocregion trigger-constدر قطعهکد بالا، با اعلام transitionAnimation بهعنوان متغیر export، امکان استفاده مجدد از آن فراهم شده است.
همچنین میتوانید بخشی از یک animation را export کنید. برای مثال، قطعهکد زیر trigger مربوط به animation را export میکند.
// #docplaster
// #docregion animation-const, trigger-const
import {animation, style, animate, trigger, transition, useAnimation} from '@angular/animations';
// #enddocregion trigger-const
export const transitionAnimation = animation([
style({
height: '{{ height }}',
opacity: '{{ opacity }}',
backgroundColor: '{{ backgroundColor }}',
}),
animate('{{ time }}'),
]);
// #enddocregion animation-const
// #docregion animation-example
export const sharedAnimation = animation([
style({
height: 0,
opacity: 1,
backgroundColor: 'red',
}),
animate('1s'),
]);
// #enddocregion animation-example
// #docregion trigger-const
export const triggerAnimation = trigger('openClose', [
transition('open => closed', [
useAnimation(transitionAnimation, {
params: {
height: 0,
opacity: 1,
backgroundColor: 'red',
time: '1s',
},
}),
]),
]);
// #enddocregion trigger-constاز این مرحله به بعد میتوانید متغیرهای animation قابلاستفاده مجدد را در class مربوط به component خود import کنید. برای مثال، قطعهکد زیر متغیر transitionAnimation را import کرده و آن را از طریق تابع useAnimation() بهکار میبرد.
// #docplaster
// #docregion reusable
import {Component, input} from '@angular/core';
import {transition, trigger, useAnimation, AnimationEvent} from '@angular/animations';
import {transitionAnimation} from './animations';
@Component({
selector: 'app-open-close-reusable',
animations: [
trigger('openClose', [
transition('open => closed', [
useAnimation(transitionAnimation, {
params: {
height: 0,
opacity: 1,
backgroundColor: 'red',
time: '1s',
},
}),
]),
]),
],
templateUrl: 'open-close.html',
styleUrls: ['open-close.css'],
})
// #enddocregion reusable
export class OpenCloseBooleanComponent {
isOpen = false;
toggle() {
this.isOpen = !this.isOpen;
}
logging = input(false);
onAnimationEvent(event: AnimationEvent) {
if (!this.logging) {
return;
}
}
}مطالب بیشتر درباره animationهای Angular
ممکن است مطالب زیر نیز برایتان مفید باشند: