I would like to fire two animations at the same time on click. The animation triggers use the same state, one is placed on an outer parent div and the other is nested within this div. The style changes are made, but the transition is applied only on the parent component. I've used animateChild within my parent animation with no luck. How can I apply an animation both a parent and child element?
animations.ts
import {
trigger,
state,
style,
transition,
animate,
query,
group,
animateChild,
} from "@angular/animations";
export const Animations = {
animations: [
trigger("expansionTrigger", [
state(
"true",
style({
height: "*"
})
),
state(
"false",
style({
height: "0",
display: "none"
})
),
transition("false <=> true", [
group([
query("@colExpansion", [animateChild()]),
animate("3s ease")
])
])
]),
trigger("colExpansion", [
state(
"true",
style({
"-webkit-box-flex": "0",
flex: "0 0 66.66667%",
"max-width": "66.66667%"
})
),
state(
"false",
style({
"flex-basis": "0",
"-webkit-box-flex": "1",
"flex-grow": "1",
"max-width": "100%"
})
),
transition("false <=> true", animate(3))
])
]
};
body.component.ts
import { Component, Input } from '@angular/core';
import { Animations } from '../animations';
@Component({
selector: 'app-body',
templateUrl: './body.component.html',
styleUrls: ['./body.component.css'],
animations: Animations.animations
})
export class BodyComponent {
@Input() isExpanded: string;
}
body.component.html
<div [@expansionTrigger]="isExpanded === 'true' ? 'true' : 'false'">
<div [@colExpansion]="isExpanded === 'true' ? 'true' : 'false'">
</div>
</div>