代码之家  ›  专栏  ›  技术社区  ›  Ka Tech

角度动画使转换不在ngif上工作

  •  0
  • Ka Tech  · 技术社区  · 6 年前

    在Angular7中,我正在制作一个动画扩展面板。我使用state enter将不透明度从0更改为1,高度从0更改为*。在左边,我希望不透明度从1到0,高度从*到0。

    我可以成功地为enter制作动画,但由于某些原因,我在休假时得到了一个有趣的结果。它几乎先膨胀后收缩。我设置了一个stackblitz示例来更好地解释。

    当展开并单击“单击我”按钮时,如何获得结果不透明度从1变为0,高度从*变为0?

    StackBlitz

    下面是我的动画代码。提前谢谢!

    animations: [
        trigger('myAccordian', [      
          state('*', style({ opacity: 1, height: '*'})),
          transition(':enter', [
            style({ opacity: 0, height: 0}),
            animate('1s ease-in')
          ]),
          transition(':leave', [
            style({ opacity: 0, height: 0}),
            animate('1s ease-out')
          ])
        ])
      ]
    
    0 回复  |  直到 6 年前
        1
  •  3
  •   Jonathan Stellwag    6 年前

    如果您描述了一个“*”状态,那么您还需要提供一些关于它在 无效 状态。另一种方法是直接描述输出样式,然后在动画内部处理完成样式。一个很好的例子可以在这里找到: Angular transition

    trigger('myAccordian', [      
      transition(':enter', [
        style({ opacity: 0, height: 0}),
        animate('1s ease-in', style({ opacity: 1, height: '*' }))
      ]),
      transition(':leave', [
        style({ opacity: 1, height: '*'}),
        animate('1s ease-out', style({ opacity: 0, height: 0 }))
      ])
    ])