找到了合成属性@enterAnimation。请在您的应用程序中包含“ BrowserAnimationsModule”或“ NoopAnimationsModule”。角度4


76

在运行Karma测试Angular4应用程序时,Found the synthetic property @enterAnimation. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.尽管我已经将模块导入了app.module.ts,但仍收到此错误 。

        // animation module
        import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
    ...
@NgModule({
    imports: [...
        BrowserAnimationsModule,
        ...
      ],

在我的组件中

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

    @Component({
      selector: 'app-about',
      animations: [
        trigger(
          'enterAnimation', [
            transition(':enter', [
              style({ transform: 'translateX(100%)', opacity: 0 }),
              animate('500ms', style({ transform: 'translateX(0)', opacity: 1 }))
            ]),
            transition(':leave', [
              style({ transform: 'translateX(0)', opacity: 1 }),
              animate('500ms', style({ transform: 'translateX(100%)', opacity: 0 }))
            ])
          ]
        ),
        trigger(
          'enterAnimationVetically', [
            transition(':enter', [
              style({ transform: 'translateY(100%)', opacity: 0 }),
              animate('500ms', style({ transform: 'translateY(0)', opacity: 1 }))
            ]),
            transition(':leave', [
              style({ transform: 'translateY(0)', opacity: 1 }),
              animate('500ms', style({ transform: 'translateY(100%)', opacity: 0 }))
            ])]
        )
      ],
...

该应用程序可以完美运行,ng serve但我收到了因果报应的错误消息。

Answers:


105

未来的读者:当您忘记放置时,也会出现此确切错误

animations: [ <yourAnimationMethod()> ]

在您的@Componentts文件中。

也就是说,如果您使用[@yourAnimationMethod]的是HTML模板。


16
究竟。由于导入失败,不一定会出现此错误BrowserAnimationsModule
CalvinDale

2
我将动画错误地导入了要制作动画的组件,我需要在保存路由器插座的组件上导入动画。由于@stavm -这是因为我已经导入的动画模块误导性的错误
Ĵ国王

您完全可以选择它。谢谢@Stavm。
Mohammad Sadiqur Ra​​hman

谢谢,我在克隆组件时忘记了动画... :)
Sampgun

73

我找到了解决方案。我只需要导入app.component.spec.ts相同的导入

 // animation module
        import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 
    ...
@NgModule({
    imports: [...
        BrowserAnimationsModule,
        ...
      ],

1
我正在尝试解决此问题,但此解决方案不适用于我。@NgModule代码在文件中的哪里放置?在进口之后?
hamobi

1
感谢您的快速回复。.您是否偶然在角度6上尝试了此操作?我希望您的修复会为我清除错误,但事实
并非如此。.– hamobi

13
未来的读者,当您忘记将其放置animations: [ <yourAnimationMethod()> ]在@Component上时(仅当您[@yourAnimationMethod]在HTML模板上使用时),您也会收到此确切错误
Stavm

2
@Stavm谢谢,这解决了我的问题,您应该将其添加为其他答案,以使其他相同问题的用户更容易看到。
IBRA

1
非常感谢您
L1ghtk3ira '19

14

对于Angular 6应用程序,我通过将以下内容添加到我的组件.spec.ts文件中解决了该问题:

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

然后将,添加BrowserAnimationsModuleTestBed.configureTestingModule同一组件.spec.ts文件中的导入中。

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ LinkedSitesComponent ], imports: [ BrowserAnimationsModule ],
    })
    .compileComponents();
  }));

在运行Karma测试用例时,我遇到了类似的问题。这解决了我的问题。但是,奇怪的是我的组件没有导入BrowserAnimationsModule,也没有导入相同的组件到它的父级:)
Kushal J.19年

竖起大拇指,@ bravo。
库沙尔J.,

9

对于angular 7和以前的版本,您只需要在app.module.ts文件中添加此行,并记住将其也放在导入数组模块的同一文件中:

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

6

这应该工作。

1-在app.module.ts中导入BrowserAnimationsModule

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

2-添加到app.module.ts中的导入

imports: [
BrowserModule,
FormsModule,
HttpModule,
routing,
Ng2SmartTableModule,
TreeModule,
BrowserAnimationsModule]

3

如果在单元测试期间看到此错误,则可以将实用程序模块导入NoopAnimationsModule到您的spec文件中,该文件模拟真实的动画,并且实际上不进行动画处理

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


2

就我而言,我所做的就是将此行添加到我的组件(users-component.ts)

@Component({
animations: [appModuleAnimation()],
})

当然,请确保已在app.component.ts中导入了相关模块,或者在模块导入位置

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

    @NgModule({
         imports: [
            BrowserAnimationsModule,
        ],
    })

2

如果你面对的这个错误Storybook,那么就导入此BrowserAnimationsModulemoduleMetadata您的故事。
像这样,

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


export const Primary = () => ({
  template: `
   <div style="width: 720px">
    <view-list [data]="data"></view-list>
   </div>
   `,
  moduleMetadata: {
    imports: [AppModule, BrowserAnimationsModule],
  },
  props: {
    data: SOME_DATA_CONSTANT,
  },
});

PS:对于Angular,上面提到的答案很有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.