'Trovato la proprietà sintetica @panelState. Includi "BrowserAnimationsModule" o "NoopAnimationsModule" nella tua applicazione. "


Risposte:


227

Assicurarsi che il @angular/animationspacchetto sia installato (ad es. Eseguendo npm install @angular/animations). Quindi, in app.module.ts

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

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

Come posso verificare se è installato o meno sul PC?
Mr in tutto il mondo il

2
npm list --depth=0elenca i pacchetti installati sul progetto
Ploppy il

1
Qual è il risultato atteso se già installato.? posso solo vedere questi 2:├── @angular/platform-browser@4.3.5 ├── @angular/platform-browser-dynamic@4.3.5
Mr in tutto il mondo, il

7
Ho installato tutti i pacchetti per l'animazione e ho anche importato "BrowserAnimationsModule" in AppModule. Ma sta ancora ottenendo l'errore.
crossRT

1
@crossRT Hai importato anche l'animazione se l'hai creata in un altro file?
Ploppy,

165

Questo messaggio di errore è spesso fuorviante .

Si potrebbe aver dimenticato di importare il BrowserAnimationsModule. Ma questo non era il mio problema . Stavo importando BrowserAnimationsModulenella radiceAppModule , come dovrebbero fare tutti.

Il problema era qualcosa di completamente estraneo al modulo. Stavo animando un *ngIfmodello nel componente ma mi ero dimenticato di menzionarlo nella @Component.animations classe componente .

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

Se usi un'animazione in un modello, devi anche elencarla ogni volta nei animationsmetadati del componente ... ogni volta .


Devi usare una vecchia versione di Angular, l'errore è diverso:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy,

2
Assolutamente. Ma nel frattempo, per quelli bloccati com'ero e trovando solo i consigli di cui sopra, la mia risposta ti dà un'altra cosa da provare.
Ward,

1
Ho anche avuto quell'errore fuorviante (usando l'angolare 7.1)
Andi-lo

1
Sto usando Angular 8.0.0 e ottengo quell'eccezione ma definisco l'animazione nel componente come hai detto risolto tutto, grazie.
Alireza,

1
Lo stesso con @Alireza, ho avuto lo stesso errore su Angular 8.0. Le animazioni incluse nel componente funzionano.
trungk18,

19

Ho riscontrato problemi simili, quando ho provato a utilizzare il BrowserAnimationsModule. I seguenti passaggi hanno risolto il mio problema:

  1. Elimina i node_modules dir
  2. Svuota la cache del pacchetto utilizzando npm cache clean
  3. Esegui uno di questi due comandi elencati qui per aggiornare i pacchetti esistenti

Se si verificano errori 404 come

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

aggiungi le seguenti voci mapnel tuo system.config.js :

'@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 ha fornito la soluzione su questo problema github .


2
Grazie per queste informazioni ... apprezzo che questa sia una nuova versione di Angular, ma sembra una lotta senza fine per aggirare problema dopo problema e imbattersi in soluzioni alternative come queste. È roba seriamente ostile all'utente.
Mike Gledhill,

@MikeGledhill Sì, hanno sicuramente fatto schifo nel rendere le cose facili da aggiornare nell'ultimo anno. È stata un'esperienza infelice.
Jackson Bray,

come ho scoperto oggi, questo problema si verifica solo se il tuo progetto si basa sul seme angolare di avvio rapido. il nuovo cli angolare non usa questo tipo di file di configurazione
wodzu,

6

Tutto quello che dovevo fare era installare questo

npm install @angular/animations@latest --save  

e quindi importare

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

nel tuo app.module.tsfile.


-1; questo per lo più solo duplica la risposta accettata che è stato postato un paio di mesi prima, ma anche manca la fase di passaggio BrowserAnimationsModuleal @NgModuledecoratore. È anche praticamente identico alla risposta di vikvincer pubblicata poche ore prima.
Mark Amery,

4
non è un duplicato della risposta di nessuno. la mia risposta è quello che ho fatto. @NgModule decorator è sicuramente corretto. identico virtuale si aggiunge a risposte conclusive ma ragazzo. non hai bisogno di bandiera.
SamYah,

6

Per me, ho perso questa affermazione in @Component decorator: animations: [yourAnimation]

Una volta aggiunta questa affermazione, gli errori sono scomparsi. (Angolare 6.x)


In realtà, c'è una pagina su questo nella documentazione angolare . Dovrei avere RTFM
Alexandre Germain il

2

Il mio problema era che il mio @ angular / platform-browser era nella versione 2.3.1

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

L'aggiornamento alla 4.4.6 ha fatto il trucco e ha aggiunto la cartella / animations in node_modules / @ angular / platform-browser


E questo ha anche finito per aggiornare il mio intero progetto angolare alla 4.4.6
Tanel Jõeäär il

2

Dopo aver installato un modulo di animazione, crei un file di animazione nella cartella dell'app.

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%)' }))
            ])
        ]);
    }

Quindi importare questo file di animazione in qualsiasi componente.

Nel tuo file component.ts

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

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

Non dimenticare di importare l'animazione in app.module.ts

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

2

L'animazione deve essere applicata sul componente specifico.

ES: utilizzo della direttiva animazione in altri componenti e fornito in un altro.

CompA --- @Component ({



animazioni: [animazione]}) CompA --- @Component ({



animazioni: [animazione] <=== questo dovrebbe essere fornito nel componente usato})


1

Per me è stato perché ho inserito il nome dell'animazione tra parentesi quadre.

<div [@animation]></div>

Ma dopo aver rimosso la parentesi tutto ha funzionato bene (In Angular 9.0.1):

<div @animation></div>

0

Ho seguito l'errore:

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

Seguo la risposta accettata da Ploppy e il mio problema è stato risolto.

Ecco i passaggi:

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.

Risolverà l'errore. Buona programmazione !!


-3

Prova questo

npm install @ angular / animations @ latest --save

importare {BrowserAnimationsModule} da "@ angular / platform-browser / animations";

questo funziona per me.


-1; questo per lo più solo duplica la risposta accettata che è stato postato un paio di mesi prima, ma anche manca la fase di passaggio BrowserAnimationsModuleal @NgModuledecoratore.
Mark Amery,

-3

Aggiungi semplicemente ... import {BrowserAnimationsModule} da "@ angular / platform-browser / animations";

importazioni: [.. BrowserAnimationsModule

],

nel file app.module.ts.

assicurati di aver installato .. npm install @ angular / animations @ latest --save


-1 per la duplicazione di contenuti che sono già in molte altre risposte qui.
Mark Amery,

-3

Aggiornamento per angularJS 4:

Errore: errore XHR (SystemJS) (404 non trovato) durante il caricamento di http: // localhost: 3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Soluzione:

**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 ],
...

2
-1; "angularJS 4" non è una cosa, e non è chiaro cosa esattamente stai cercando di esprimere qui poiché fornisci solo un messaggio di errore e un blocco di codice difficile da leggere senza una frase di spiegazione.
Mark Amery,

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

@NgModule({
  declarations: [   --   ],
  imports: [BrowserAnimationsModule],
  providers: [],
  bootstrap: []
})

2
Fornisci una spiegazione per il tuo codice. Pubblicare il codice da solo non aiuta nessuno tranne OP, e non capiscono perché funziona (o non funziona).
jhpratt,

Sebbene questo frammento di codice possa risolvere il problema, non spiega perché o come risponde alla domanda. Includi una spiegazione per il tuo codice, in quanto ciò aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e quelle persone potrebbero non conoscere i motivi del tuo suggerimento sul codice
Balagurunathan Marimuthu,

-1; questo duplica solo il contenuto della risposta accettata.
Mark Amery,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.