'Encontré la propiedad sintética @panelState. Incluya "BrowserAnimationsModule" o "NoopAnimationsModule" en su aplicación. '

Respuestas:

227

Asegúrese de que el @angular/animationspaquete esté instalado (por ejemplo, ejecutando npm install @angular/animations). Luego, en tu app.module.ts

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

@NgModule({
  ...,
  imports: [
    ...,
    BrowserAnimationsModule
  ],
  ...
})
Ploppy
fuente
¿Cómo puedo verificar si está instalado en la PC o no?
Señor en todo el mundo el
2
npm list --depth=0enumera los paquetes instalados en su proyecto
Ploppy
1
¿Cuál es el resultado esperado si ya está instalado? Solo puedo ver estos 2:├── @angular/[email protected] ├── @angular/[email protected]
Señor en todo el mundo
77
He instalado todos los paquetes para animación y también importé "BrowserAnimationsModule" en el AppModule. Pero todavía está recibiendo el error.
crossRT
1
@crossRT ¿También importó su animación si la creó en un archivo diferente?
Ploppy
165

Este mensaje de error a menudo es engañoso .

Es posible que haya olvidado importar el BrowserAnimationsModule. Pero ese no fue mi problema . Estaba importando BrowserAnimationsModuleen la raíz AppModule, como todos deberían hacer.

El problema era algo completamente ajeno al módulo. Estaba animando un *ngIfen la plantilla del componente pero había olvidado mencionarlo en la @Component.animations clase para el componente .

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

Si usa una animación en una plantilla, también debe incluir esa animación en los animationsmetadatos del componente ... cada vez .

Sala
fuente
Debe estar utilizando una versión anterior de Angular, el error es diferente:Error: The provided animation trigger "myAnimation" has not been registered!
Ploppy
2
Absolutamente. Pero mientras tanto, para aquellos atrapados como yo y que solo encontré el consejo anterior, mi respuesta te da una cosa más para probar.
Ward,
1
También recibí ese error engañoso (usando angular 7.1)
Andi-lo
1
Estoy usando Angular 8.0.0 y obtengo esa excepción, pero definir la animación en el componente como dijiste solucionó todo, gracias.
Alireza
1
Lo mismo con @Alireza, obtuve el mismo error en Angular 8.0. Animaciones incluidas en los trabajos de componentes.
trungk18
19

Me encontré con problemas similares cuando intenté usar el BrowserAnimationsModule. Los siguientes pasos resolvieron mi problema:

  1. Eliminar el directorio node_modules
  2. Borre la caché de su paquete usando npm cache clean
  3. Ejecute uno de estos dos comandos enumerados aquí para actualizar sus paquetes existentes

Si experimenta un error 404 como

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

agregue las siguientes entradas mapen su 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 proporcionó la solución a este problema de github .

wodzu
fuente
2
Gracias por esta información ... Aprecio que esta sea una nueva versión de Angular, pero se siente como una lucha interminable para solucionar un problema tras otro, y tropezar con soluciones como estas. Es algo realmente poco amigable para el usuario.
Mike Gledhill
@MikeGledhill Sí, ciertamente han sido muy malos para hacer que las cosas sean fáciles de actualizar durante el año pasado. Ha sido una experiencia miserable.
Jackson Bray
Como descubrí hoy, este problema solo ocurre si su proyecto se basa en la semilla de inicio rápido angular. el nuevo cli angular no utiliza este tipo de archivo de configuración
wodzu
6

Todo lo que tenía que hacer era instalar esto

npm install @angular/animations@latest --save  

y luego importar

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

en tu app.module.tsarchivo.

SamYah
fuente
-1; esto en su mayoría solo duplica la respuesta aceptada que se publicó un par de meses antes, pero también se pierde el paso de pasar BrowserAnimationsModuleal @NgModuledecorador. Es también virtualmente idéntica a la respuesta de vikvincer registró unas horas antes.
Mark Amery
44
No es un duplicado de la respuesta de nadie. Mi respuesta es lo que hice. El decorador @NgModule es definitivamente correcto. virtual idéntico se suma a respuestas concluyentes ma guy. no necesitabas marcar.
SamYah
6

Para mí, me perdí esta declaración en el decorador @Component: animaciones: [yourAnimation]

Una vez que agregué esta declaración, los errores desaparecieron. (Angular 6.x)

Howard
fuente
En realidad, hay una página sobre esto en la documentación angular . Debería tener RTFM
Alexandre Germain
2

Mi problema fue que mi @ angular / platform-browser estaba en la versión 2.3.1

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

La actualización a 4.4.6 hizo el truco y agregó la carpeta / animaciones en node_modules / @ angular / platform-browser

Tanel Jõeäär
fuente
Y eso también terminó actualizando todo mi proyecto Angular a 4.4.6
Tanel Jõeäär
2

Después de instalar un módulo de animación, crea un archivo de animación dentro de la carpeta de la aplicación.

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

Luego importa este archivo de animación a cualquier componente.

En su archivo component.ts

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

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

No olvides importar animación en tu app.module.ts

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

La animación debe aplicarse en el componente específico.

EJ: Uso de la directiva de animación en otro componente y proporcionada en otro.

CompA --- @Component ({



animaciones: [animación]}) CompA --- @Component ({



animaciones: [animación] <=== esto debe proporcionarse en el componente utilizado})

Nanda Kishore Allu
fuente
1

Para mí fue porque puse el nombre de la animación entre corchetes.

<div [@animation]></div>

Pero después de quitar el soporte todo funcionó bien (en Angular 9.0.1):

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

Obtuve el siguiente error:

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

Sigo la respuesta aceptada por Ploppy y resolvió mi problema.

Aquí están los pasos:

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.

Resolverá el error. Feliz codificación !!

Trilok Pathak
fuente
-3

Prueba esto

npm install @ angular / animations @ latest --save

importar {BrowserAnimationsModule} desde '@ angular / platform-browser / animations';

esto funciona para mi

vikvincer
fuente
-1; esto en su mayoría solo duplica la respuesta aceptada que se publicó un par de meses antes, pero también se pierde el paso de pasar BrowserAnimationsModuleal @NgModuledecorador.
Mark Amery
-3

Simplemente agregue ... importe {BrowserAnimationsModule} desde '@ angular / platform-browser / animations';

importaciones: [.. BrowserAnimationsModule

],

en el archivo app.module.ts.

asegúrese de haber instalado .. npm install @ angular / animations @ latest --save

Saurav
fuente
-1 para duplicar contenido que ya está en muchas otras respuestas aquí.
Mark Amery
-3

Actualización para angularJS 4:

Error: (SystemJS) Error XHR (404 no encontrado) al cargar http: // localhost: 3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations

Solución:

**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
fuente
2
-1; "angularJS 4" no es una cosa, y no está claro qué es exactamente lo que estás tratando de expresar aquí, ya que solo proporcionas un mensaje de error y un bloque de código difícil de leer sin siquiera una frase de explicación.
Mark Amery
-3
--
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
---

@NgModule({
  declarations: [   --   ],
  imports: [BrowserAnimationsModule],
  providers: [],
  bootstrap: []
})
Girish
fuente
2
Proporcione una explicación para su código. Publicar código por sí solo no ayuda a nadie, excepto a OP, y no entienden por qué funciona (o no).
jhpratt
Si bien este fragmento de código puede resolver el problema, no explica por qué o cómo responde la pregunta. Incluya una explicación para su código, ya que eso realmente ayuda a mejorar la calidad de su publicación. Recuerde que usted está respondiendo a la pregunta de los lectores en el futuro, y esa gente puede no saber las razones de su sugerencia de código
Balagurunathan Marimuthu
-1; esto simplemente duplica el contenido de la respuesta aceptada.
Mark Amery