我想在Angular 5中实现这一点(参考附图)
有两个组件用户布局和角色
用户布局组件已在角色组件的开头使用。 我可以使用动画展开和折叠Parent组件,但无法同时为子组件执行相同的操作。
以任何方式从父组件触发子组件上的动画。
答案 0 :(得分:1)
对于子组件和父组件之间的通信,您可以使用@Input
,@Output
和EventEmitter
。
如果您想将数据从父级传递给子级,则只需使用@Input
执行此操作,如下所示:
首先,您需要使用
将Input
导入您的子组件
import { Component, Input } from '@angular/core';
然后,您需要在子组件中声明@Input
变量
export class ChildComponent {
@Input() parentVariable: string;
}
然后在您的父级中使用子组件时,您需要将varible指定为属性,如下所示
<child-component [parentVariable]="parentData"></child-component>
您的父组件中应该有parentData
声明,其更改将反映在子组件@Input
变量parentVariable
中。
这就是你需要做的所有事情,你需要动画代码,这将触发更改parentVariable
变量。
希望这有助于!!!!
答案 1 :(得分:0)
查看animateChild()
方法。
摘自@angular/animations
作者MatiasNiemelä发表的关于animateChild()
现在,当应用程序中有一个动画准备就绪,但运行父动画时会出现什么情况呢?有没有一种方法可以让父动画在子动画运行时,运行多长时间或者根本不运行? [...]
如果这些动画同时触发,则父动画将始终获胜并且将跳过子动画。但是,使用animateChild,我们可以将子动画查询到子项中并告诉它何时允许动画:
Sub Animations With animateChild
<强> component.html 强>
<!-- do these two guys animate at the same time? -->
<div [@parent]="parentVal">
<div [@child]="childVal">
...
</div>
</div>
<强> component.animations 强>
trigger('parent', [
style({ transform: 'translate(-100px)' }),
animate('500ms',
style({ transform: 'translate(0px)' })),
query('@ child', animateChild())
]),
trigger('child', [
style({ opacity:0 }),
animate('0.5s', style({ opacity:1 }))
])