【问题标题】:Angular 2 Animation Callback .done, setting properties?Angular 2 Animation Callback .done,设置属性?
【发布时间】:2017-09-02 06:53:46
【问题描述】:

假设我们有: <li *ngFor="let item of items" [@myTrigger]='state' (@myTrigger.start)="animStart($event)" (@myTrigger.done)="animDone($event)">{{ item }}</li>

还有方法animDone:

animDetails: string;

animDone(event:any) {
    console.log('Ended!');
    this.animDetails = 'I am done!';
}

在视图中我有{{ animDetails }}

奇怪的是,console.log('Ended!') 适当地触发,而 animDetails 却没有。

第一个动画,没有任何改变。第二个动画(通过单击按钮启动)“我完成了!”在开始时立即触发,而不是 .done。

【问题讨论】:

    标签: angular angular2-animation


    【解决方案1】:

    出于性能原因,AFAIK 动画在 Angulars 区域之外运行。

    constructor(private cdRef:ChangeDetectorRef) {}
    
    animDetails: string;
    
    animDone(event:any) {
        console.log('Ended!');
        this.animDetails = 'I am done!';
        this.cdRef.detectChanges();
    }
    

    在 Angulars 区域内运行动画回调时出现问题。我认为它已经修复了,但您的问题似乎另有说明,除非您没有使用最新的 Angular2 版本。

    【讨论】:

    • 啊!对于这个特定的示例,我使用了 Angular 2 快速入门。这可能是为什么?顺便说一句,我在 Angular 2 中到处都能看到你的名字。干得好!
    • 谢谢。 “快速入门”是什么意思? angular.io/docs/ts/latest/quickstart.html?它似乎正在使用最新版本。该问题已在 10 天前修复。它可能不包含在最新版本中。 github.com/angular/angular/issues/11881
    猜你喜欢
    • 2017-07-08
    • 1970-01-01
    • 2015-11-22
    • 2016-11-07
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多