2017-07-11 95 views
1

我有一个动态创建的提醒组件。当警报显示和隐藏时,我希望淡入/淡出动画。在创建警报时,似乎动画不会触发,但是当警报关闭时,动画确实会触发。加载角度2/4动画动态组件

经过进一步的调查,我意识到警报并没有消退,这是因为在视图位于DOM之前触发的ngOnInit()函数中与动画触发器绑定的属性发生了更改,因此会发生动画组件在屏幕上之前。

export class OverlayMessageComponent implements OnInit { 

    ... 

    ngOnInit() { 
    if(this.autoShow) { 
     this.show(); 
    } 
    } 

    ... 

} 

我知道我可以在ngAfterViewInit()功能更改的属性,但是这可能会导致异常所强调here“表达它检查后发生了变化”。

我试图添加一个动画触发器,使用* => truevoid => true,但这并没有解决问题。我不知道是否有办法触发这个动画,并以某种方式仍然使用ngOnInit()

代码示例:https://plnkr.co/edit/8NvfhDvLVBd71I7DR0kW

回答

0

我碰到了同样的问题 - 在角度4.2.4。即使使用ngAfterViewInit(),我也无法触发动画。我最终以可观察的方式添加了1ms的延迟,并且工作正常。

ngOnInit(){ 
    Observable.of(true).delay(1) 
    .subscribe(() => { this.show() }) 
}