是否可以为 Angular 2 的 ng-switch 设置动画

Is it possible to animate Angular 2's ng-switch

是否可以制作动画?我有这段代码

div([ngSwitch]="switchState")
  ul(fxLayout="row", fxLayoutAlign="space-between", *ngSwitchCase="0")
   some-list
  ul(fxLayout="row", fxLayoutAlign="space-between", *ngSwitchCase="1")
   second-list  
  ul(fxLayout="row", fxLayoutAlign="space-between", *ngSwitchCase="2")
   third-list

实际开关功能工作正常,我想为其设置动画但我不确定 css 属性 angular 玩什么,我怀疑当时它甚至不存在在 DOM 中,是否可以为 DOM 中的新增内容制作动画?

是的,可以使用 Angular2 animation system 为 ng-switch 设置动画。

您可以在文档中阅读更多相关信息,但要点是您可以为添加到 DOM 的任何元素设置动画。当使用 *ngSwitchCase 元素被删除并根据条件插入到 DOM 中。此状态称为 void 状态,您可以选择在它从 void 状态过渡到可见时应用的动画。

给定以下使用 ngSwitch 的标记:

<div [ngSwitch]="val">
   <p *ngSwitchCase="true" [@enterTrigger]="'fadeIn'">Value is TRUE</p>
   <p *ngSwitchCase="false" [@enterTrigger]="'fadeIn'">Value is FALSE</p>
</div>

您可以像这样在组件中定义动画:

@Component({
  selector: 'my-app',
  animations: [
    trigger('enterTrigger', [
    state('fadeIn', style({
        opacity: '1',
        transform: 'translateY(50%)'
    })),
    transition('void => *', [style({opacity: '0'}), animate('500ms')])
    ])
  ]
})

这里的 void => * 转换决定了元素从 void 状态移动到任何状态(包括变得可见)时如何设置动画

Plunkr 演示:https://plnkr.co/edit/IPLImRt34esClBg1HZdm?p=preview

P.S. 别忘了安装 @angular/animations