Gefunden die synthetische Eigenschaft @enterAnimation. Bitte fügen Sie Ihrer Anwendung entweder "BrowserAnimationsModule" oder "NoopAnimationsModule" hinzu. Angular4


75

Beim Ausführen von Karma zum Testen meiner Angular4-Anwendung wird dieser Fehler angezeigt, Found the synthetic property @enterAnimation. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.obwohl ich das Modul bereits in app.module.ts importiert habe

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

und in meiner Komponente :

 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 }))
            ])]
        )
      ],
...

Die Anwendung läuft noch perfekt mit ng serve, ich habe diesen Fehler mit Karma bekommen.

Antworten:


100

Zukünftige Leser: Sie können genau diesen Fehler auch erhalten, wenn Sie vergessen, zu platzieren

animations: [ <yourAnimationMethod()> ]

auf Ihrer @Componentts-Datei.

Dies ist [@yourAnimationMethod]der Fall , wenn Sie die HTML-Vorlage verwenden.


15
Genau. Dieser Fehler tritt nicht unbedingt auf, da der Import fehlgeschlagen ist BrowserAnimationsModule.
CalvinDale

2
Ich hatte die Animation fälschlicherweise in die zu animierende Komponente importiert. Ich musste die Animation in die Komponente importieren, die den Router-Ausgang enthält. Danke @stavm - es ist ein irreführender Fehler, da ich die Animationsmodule bereits importiert hatte
J King

Sie wählen es genau. Danke @Stavm.
Mohammad Sadiqur Rahman

Danke, ich hatte Animationen beim Klonen einer Komponente vergessen ... :)
Sampgun

72

Ich habe die Lösung gefunden. Ich musste nur im app.component.spec.tsselben Import importieren

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

1
Ich versuche dieses Problem zu lösen und diese Lösung funktioniert nicht für mich. Wo platziere ich den @ NgModule-Code in der Datei? gleich nach den Importen?
Hamobi

1
danke für die schnelle antwort .. hast du das zufällig auf eck 6 versucht? Ich hatte gehofft, Ihr Fix würde den Fehler für mich beheben, aber es tut nicht ..
Hamobi

13
Zukünftige Leser können diesen genauen Fehler auch erhalten, wenn Sie vergessen, animations: [ <yourAnimationMethod()> ]auf Ihrer @Component zu platzieren (nur wenn Sie [@yourAnimationMethod]auf der HTML-Vorlage verwenden)
Stavm

2
@Stavm danke, dies hat mein Problem gelöst. Sie sollten es als andere Antwort hinzufügen, um für andere mit demselben Problem besser sichtbar zu sein.
IBRA

1
Vielen Dank sehr hilfreich
L1ghtk3ira

14

Für meine Angular 6-Anwendung habe ich das Problem behoben, indem ich meiner Komponentendatei .spec.ts Folgendes hinzugefügt habe :

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

Fügen Sie dann die BrowserAnimationsModulezu den Importen der TestBed.configureTestingModulein derselben Komponente .spec.ts- Datei hinzu

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

Beim Ausführen des Karma-Testfalls hatte ich ein ähnliches Problem. Und das hat mein Problem behoben. Es war jedoch seltsam, dass meine Komponente weder BrowserAnimationsModule noch dasselbe in ihr übergeordnetes
Element

Hat einen Daumen hoch gegeben, @bravo.
Kushal Jayswal

9

Für Angular 7 und frühere Versionen müssen Sie diese Zeile nur in Ihre app.module.tsDatei einfügen. Denken Sie daran, sie auch in die Import-Array-Module in derselben Datei einzufügen:

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

6

Das sollte funktionieren.

1- Importieren Sie BrowserAnimationsModule in app.module.ts

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

2 - Zu den Importen in app.module.ts hinzufügen

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

3

Wenn Sie diesen Fehler während NoopAnimationsModuledes Komponententests sehen, können Sie ein Dienstprogrammmodul wie in Ihre Spezifikationsdatei importieren, das die eigentliche Animation verspottet und nicht wirklich animiert

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


2

Für meinen Fall habe ich diese Zeile nur zu meiner Komponente hinzugefügt (users-component.ts).

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

Stellen Sie natürlich sicher, dass Sie das entsprechende Modul in app.component.ts importiert haben oder wo Sie Ihre Module importieren

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

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

1

Wenn Sie diesen Fehler in Gesicht Storybook, dann importiere dies BrowserAnimationsModulezu moduleMetadatain Ihrer Geschichte.
So was,

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: Für Angular funktionieren die oben genannten Antworten gut!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.