2016-04-09 79 views
0

我想一個幻燈片下/上動畫應用到組件,我也看到了後下:Angular2動畫對組件

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

該解決方案似乎在DIV工作,但在我的情況下,我有一個頁面中的組件,只有在滿足某些條件時纔會顯示。當條件成立時,我希望組件滑下,當它再次變爲假時,我希望它滑動並變得不可見。

切換組件

但這似乎並沒有工作,按照上面的計算器問題提供指導時。

回答

2

您可以修改您提到的答案中的指令,使其獲取布爾類型的輸入,並更改顯示/隱藏元素/組件的輸入。 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

+0

謝謝Abdul Rahman有幫助,現在還有兩個問題: 1.當我用100%(而不是100px)替換AnimateBox組件中的高度時,幻燈片效果完全不起作用。由於滑動組件的高度未知,我想使用100%而不是將其設置爲固定的像素數。 2.我必須有條件地在我的頁面中包含組件,所以我使用* ngIf,但是當我將該幻燈片效果應用於該組件時,它不起作用,顯然是因爲該組件不存在於DOM中, ? –

+0

其實我有一個頁面有不同的部分,每個部分有一個添加記錄鏈接,點擊添加記錄鏈接時,我想要相應的窗體(這是一個組件)slideIn。 –

+0

@NaveedAhmed我對'ngIf'指令做了一些編輯並創建了一個新的動畫版本。 [檢查這個運動員](http://plnkr.co/edit/GxDQMWuUN4xZCbcraf66?p=preview)。我會盡力在我的答案中解釋它是否適合你。 – Abdulrahman