'Die synthetische Eigenschaft @panelState gefunden. Bitte fügen Sie Ihrer Anwendung entweder "BrowserAnimationsModule" oder "NoopAnimationsModule" hinzu. '

148

Ich habe ein Angular 4-Projekt mit Angular-Seed aktualisiert und erhalte jetzt den Fehler

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

Screenshot des Fehlers

Wie kann ich das beheben? Was genau sagt mir die Fehlermeldung?

Aravind
quelle
1
Hat mir geholfen - github.com/mgechev/angular-seed/issues/1880
FugueWeb

Antworten:

227

Stellen Sie sicher, dass das @angular/animationsPaket installiert ist (z npm install @angular/animations. B. durch Ausführen ). Dann in Ihrer app.module.ts

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

@NgModule({
  ...,
  imports: [
    ...,
    BrowserAnimationsModule
  ],
  ...
})
Ploppy
quelle
Wie kann ich überprüfen, ob es auf einem PC installiert ist oder nicht?
Herr weltweit
2
npm list --depth=0listet die installierten Pakete auf Ihrem Projekt auf
Ploppy
1
Was ist das erwartete Ergebnis, wenn es bereits installiert ist? Ich kann nur diese 2 sehen:├── @angular/[email protected] ├── @angular/[email protected]
Herr weltweit
7
Ich habe alle Pakete für die Animation installiert und auch "BrowserAnimationsModule" in das AppModule importiert. Aber es wird immer noch der Fehler angezeigt.
CrossRT
1
@crossRT Haben Sie Ihre Animation auch importiert, wenn Sie sie in einer anderen Datei erstellt haben?
Ploppy
165

Diese Fehlermeldung ist oft irreführend .

Sie können haben die importiert werden vergessen BrowserAnimationsModule. Das war aber nicht mein Problem . Ich habe BrowserAnimationsModulein den Stamm importiert AppModule, wie es jeder tun sollte.

Das Problem hatte nichts mit dem Modul zu tun. Ich habe eine *ngIfin der Komponentenvorlage animiert, aber ich hatte vergessen, sie in der @Component.animations für die Komponentenklasse zu erwähnen .

@Component({
  selector: '...',
  templateUrl: './...',
  animations: [myNgIfAnimation] // <-- Don't forget!
})

Wenn Sie eine Animation in einer Vorlage verwenden, müssen Sie diese Animation auch jedes Mal in den animationsMetadaten der Komponente auflisten .

Station
quelle
Sie müssen eine alte Version von Angular verwenden, der Fehler ist anders:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy
2
Absolut. Aber in der Zwischenzeit gibt meine Antwort
Ward
1
Ich habe auch diesen irreführenden Fehler (mit Winkel 7.1)
Andi-lo
1
Ich verwende Angular 8.0.0 und erhalte diese Ausnahme, aber das Definieren der Animation in der Komponente, wie Sie sagten, hat alles behoben, danke.
Alireza
1
Wie bei @Alireza habe ich auch bei Angular 8.0 den gleichen Fehler erhalten. Eingeschlossene Animationen in der Komponente funktionieren.
Trungk18
19

Ich bin auf ähnliche Probleme gestoßen, als ich versucht habe, das zu verwenden BrowserAnimationsModule. Folgende Schritte haben mein Problem gelöst:

  1. Löschen Sie die node_modules dir
  2. Leeren Sie Ihren Paket-Cache mit npm cache clean
  3. Führen Sie einen dieser beiden hier aufgeführten Befehle aus , um Ihre vorhandenen Pakete zu aktualisieren

Wenn Sie einen 404-Fehler wie feststellen

http://.../node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Fügen Siemap in Ihrer system.config.js folgende Einträge hinzu :

'@angular/animations': 'node_modules/@angular/animations/bundles/animations.umd.min.js',
'@angular/animations/browser':'node_modules/@angular/animations/bundles/animations-browser.umd.js',
'@angular/platform-browser/animations': 'node_modules/@angular/platform-browser/bundles/platform-browser-animations.umd.js'

naveedahmed1 lieferte die Lösung für dieses Github-Problem .

Wodzu
quelle
2
Vielen Dank für diese Information ... Ich schätze, dass dies eine neue Version von Angular ist, aber es fühlt sich wie ein unendlicher Kampf an, Problem für Problem zu umgehen und über solche Workarounds zu stolpern. Es ist ernsthaft benutzerunfreundliches Zeug.
Mike Gledhill
@MikeGledhill Yup, sie haben es im letzten Jahr mit Sicherheit nicht geschafft, die Dinge einfach zu aktualisieren. Es war eine miserable Erfahrung.
Jackson Bray
Wie ich heute herausgefunden habe, tritt dieses Problem nur auf, wenn Ihr Projekt auf dem eckigen Schnellstart-Startwert basiert. Die neue
Angular Cli
6

Alles was ich tun musste, war dies zu installieren

npm install @angular/animations@latest --save  

und dann importieren

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

in Ihre app.module.tsDatei.

SamYah
quelle
-1; Dies dupliziert meist nur die akzeptierte Antwort, die einige Monate zuvor veröffentlicht wurde, verpasst aber auch den Schritt, BrowserAnimationsModulean den @NgModuleDekorateur weiterzugeben. Es ist auch praktisch identisch mit der Antwort von vikvincer, die einige Stunden zuvor veröffentlicht wurde.
Mark Amery
4
Es ist kein Duplikat der Antwort von irgendjemandem. Meine Antwort ist, was ich getan habe. @ NgModule Dekorateur ist auf jeden Fall korrekt. virtuell identisch summiert sich zu schlüssigen Antworten ma guy. Du musstest nicht markieren.
SamYah
6

Für mich habe ich diese Aussage in @Component decorator verpasst: animations: [yourAnimation]

Sobald ich diese Aussage hinzugefügt habe, sind Fehler verschwunden. (Winkel 6.x)

Howard
quelle
Tatsächlich gibt es dazu eine Seite in der eckigen Dokumentation . Ich sollte RTFM
Alexandre Germain
2

Mein Problem war, dass mein @ angle / platform-Browser auf Version 2.3.1 war

npm install @angular/platform-browser@latest --save

Ein Upgrade auf 4.4.6 hat den Trick ausgeführt und den Ordner / animations unter node_modules / @ angle / platform-browser hinzugefügt

Tanel Jõeäär
quelle
Und das führte auch dazu, dass mein gesamtes Angular-Projekt auf 4.4.6
Tanel Jõeäär
2

Nach der Installation eines Animationsmoduls erstellen Sie eine Animationsdatei in Ihrem App-Ordner.

router.animation.ts

import { animate, state, style, transition, trigger } from '@angular/animations';
    export function routerTransition() {
        return slideToTop();
    }

    export function slideToRight() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateX(-100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateX(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(100%)' }))
            ])
        ]);
    }

    export function slideToLeft() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateX(100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateX(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateX(-100%)' }))
            ])
        ]);
    }

    export function slideToBottom() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateY(-100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(100%)' }))
            ])
        ]);
    }

    export function slideToTop() {
        return trigger('routerTransition', [
            state('void', style({})),
            state('*', style({})),
            transition(':enter', [
                style({ transform: 'translateY(100%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(0%)' }))
            ]),
            transition(':leave', [
                style({ transform: 'translateY(0%)' }),
                animate('0.5s ease-in-out', style({ transform: 'translateY(-100%)' }))
            ])
        ]);
    }

Anschließend importieren Sie diese Animationsdatei in eine beliebige Komponente.

In Ihrer component.ts-Datei

import { routerTransition } from '../../router.animations';

@Component({
  selector: 'app-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.scss'],
  animations: [routerTransition()]
})

Vergessen Sie nicht, Animationen in Ihre app.module.ts zu importieren

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
Chandrahasa Rai
quelle
2

Die Animation sollte auf die jeweilige Komponente angewendet werden.

EX: Verwenden der Animationsanweisung in einer anderen Komponente und Bereitstellen in einer anderen.

CompA --- @Component ({



Animationen: [Animation]}) CompA --- @Component ({



Animationen: [Animation] <=== dies sollte in der verwendeten Komponente bereitgestellt werden})

Nanda Kishore Allu
quelle
1

Für mich war, weil ich den Animationsnamen in eckige Klammern gesetzt habe.

<div [@animation]></div>

Aber nachdem ich die Halterung entfernt hatte, funktionierte alles einwandfrei (In Angular 9.0.1):

<div @animation></div>
Ale_info
quelle
0

Ich habe unten Fehler:

Found the synthetic property @collapse. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.

Ich folge der akzeptierten Antwort von Ploppy und sie hat mein Problem gelöst.

Hier sind die Schritte:

1.
    import { trigger, state, style, transition, animate } from '@angular/animations';
    Or 
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

2. Define the same in the import array in the root module.

Der Fehler wird behoben. Viel Spaß beim Codieren !!

Trilok Pathak
quelle
-3

Versuche dies

npm install @ angle / animations @ latest --save

{BrowserAnimationsModule} aus '@ angle / platform-browser / animations' importieren;

das funktioniert bei mir.

vikvincer
quelle
-1; Dies dupliziert meist nur die akzeptierte Antwort, die einige Monate zuvor veröffentlicht wurde, verpasst aber auch den Schritt, BrowserAnimationsModulean den @NgModuleDekorateur weiterzugeben.
Mark Amery
-3

Einfach hinzufügen .. {BrowserAnimationsModule} aus '@ angle / platform-browser / animations' importieren;

Importe: [.. BrowserAnimationsModule

],

in der Datei app.module.ts.

Stellen Sie sicher, dass Sie .. npm install @ angle / animations @ latest --save installiert haben

Saurav
quelle
-1 zum Duplizieren von Inhalten, die hier bereits in vielen anderen Antworten enthalten sind.
Mark Amery
-3

Update für angleJS 4:

Fehler: (SystemJS) XHR-Fehler (404 nicht gefunden) beim Laden von http: // localhost: 3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Lösung:

**cli:** (command/terminal)
npm install @angular/animations@latest --save

**systemjs.config.js** (edit file)
'@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js',
'@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js',
'@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js',

**app.module.ts** (edit file)
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
@NgModule({
  imports:      [ BrowserModule,BrowserAnimationsModule ],
...
Eman Jayme
quelle
2
-1; "angleJS 4" ist keine Sache, und es ist unklar, was genau Sie hier ausdrücken möchten, da Sie nur eine Fehlermeldung und einen schwer lesbaren Codeblock ohne einen Satz zur Erklärung bereitstellen.
Mark Amery
-3
--
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
---

@NgModule({
  declarations: [   --   ],
  imports: [BrowserAnimationsModule],
  providers: [],
  bootstrap: []
})
Girish
quelle
2
Bitte geben Sie eine Erklärung für Ihren Code. Das Posten von Code allein hilft niemandem außer OP und sie verstehen nicht, warum es funktioniert (oder nicht).
Jhpratt
Dieses Codefragment kann das Problem zwar lösen, erklärt jedoch nicht, warum oder wie es die Frage beantwortet. Bitte geben Sie eine Erklärung für Ihren Code an, da dies wirklich zur Verbesserung der Qualität Ihres Beitrags beiträgt. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Code-Vorschlag nicht kennen
Balagurunathan Marimuthu
-1; Dadurch wird nur der Inhalt der akzeptierten Antwort dupliziert.
Mark Amery