Angular 2动画,属性绑定不起作用

时间:2018-01-28 11:37:50

标签: javascript html css angular

我试图让动画淡入div。

代码:

import {
    Component,
    trigger,
    state,
    style,
    transition,
    animate,
    keyframes,
    group
} from '@angular/core';

@Component({
    selector: 'my-app',
    template: `
        <button (click)="toggle()"> toggle div </div>
        <div [@visibilityChanged]="visibilityState">
            <p>Some text...</p>
        </div>`,
    animations:
        [
            trigger('visibilityChanged', [
                state('shown', style({opacity: 1})),
                state('hidden', style({opacity: 0})),
                transition('shown => hidden', animate('600ms')),
                transition('hidden=> shown ', animate('300ms')),
            ])
        ],
})

export class AppComponent {
    visibilityState : string = 'hidden';
    toggle(){
        if(this.visibilityState === 'hidden')
            this.visibilityState = 'shown';
        else
            this.visibilityState = 'hidden';
    }
 }

当我运行此代码&#34;某些文字...&#34;尽管可见性状态是隐藏的,但仍会显示。切换事件不起作用,代码中的其他单击事件不响应。 当我删除div:

 <div [@visibilityChanged]="visibilityState">
    p>Some text.../p>
 </div>`,

程序运行正常,但我不能预先形成淡入/淡出动画。 它为什么不起作用?非常感谢!

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。据我所知,你使用了错误的导入。

从Angular 4开始,动画在他们自己的包中,而不是@ angular / core,所以你的import语句将是这样的:

import { trigger, style, transition, animate, group } from '@angular/animations';

您还必须导入BrowserAnimationsModule。例如,在你的AppModule中:

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
  // ...
  imports: [BrowserAnimationsModule]
})
export class AppModule { }

如果您没有安装AnimationsModule,请运行:

npm install @angular/animations@latest --save