【问题标题】:Angular2 Animation on a Component组件上的 Angular2 动画
【发布时间】:2016-07-31 03:19:51
【问题描述】:

我正在尝试将向下/向上滑动动画应用于组件,我还看到了以下帖子:

https://stackoverflow.com/a/34170712/2755616

此解决方案似乎适用于 DIV,但在我的情况下,我在页面中有一个组件,该组件仅在满足特定条件时才会显示。当该条件为真时,我希望组件向下滑动,当它再次变为假时,我希望它向上滑动并变得不可见。

切换组件

但是,当遵循上述 stackoverflow 问题中提供的指南时,这似乎不起作用。

【问题讨论】:

    标签: angular


    【解决方案1】:

    您可以修改您提到的答案中的指令,使其接受布尔类型的输入,并在更改输入时显示/隐藏元素/组件。 plunker with example

    @Directive({
      selector : '[animate-box]',
    })
    export class AnimateBox {
      constructor(private _ab: AnimationBuilder, private _e: ElementRef) {}
    
      @Input('animate-box')
      set animateBox(isVisible: boolean) {
        let animation = this._ab.css();
        // if isVisible is true, animate show. if it's false animate hide
      ...
      }
    }
    

    在你的组件中:

    <some-component [animate-box]="isVisible"></some-component>
    

    要记住的一点是,为了使 plunker 中的动画正常工作,您的元素/组件应该具有 block 类型的显示。这就是为什么它一开始就不适合你的原因,因为组件默认有display:inline

    【讨论】:

    • 感谢 Abdul Rahman 的帮助,现在还有两个问题: 1. 当我将 AnimateBox 组件中的高度替换为 100%(而不是 100px)时,幻灯片效果根本不起作用。由于滑动组件的高度未知,我想使用 100% 而不是将其设置为固定像素数。 2. 我必须有条件地在我的页面中包含组件,所以我使用 *ngIf,但是当我在该组件上应用此幻灯片效果时它不起作用,显然是因为该组件在 DOM 中不存在,有任何指针吗?
    • 其实我有一个不同部分的页面,每个部分都有一个添加记录链接,当点击添加记录链接时,我希望相应的表单(它是一个组件)滑入。
    • @NaveedAhmed 我对ngIf 指令进行了一些编辑并创建了一个新的动画版本。 check this plunker。如果它适合你,我会尝试在我的答案中解释它。
    • 谢谢,这似乎接近我所需要的,但我希望组件默认隐藏,因此当我设置 isVisible = false;在 AppComponent 中它会生成“错误 angular2.dev.js:23941 例外:TypeError:无法读取 [isVisible in AppComponent@2:19] 中未定义的属性 'rootNodes'”
    • @NaveedAhmed 我更新了 plunker,请再检查一遍
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多