I upgraded an Angular 4 project using angular-seed and now get the error
Found the synthetic property @panelState. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.
https://i.stack.imgur.com/Pddv7.png
How can I fix this? What exactly is the error message telling me?
Make sure the @angular/animations
package is installed (e.g. by running npm install @angular/animations
). Then, in your app.module.ts
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
...,
imports: [
...,
BrowserAnimationsModule
],
...
})
This error message is often misleading.
You may have forgotten to import the BrowserAnimationsModule
. But that was not my problem. I was importing BrowserAnimationsModule
in the root AppModule
, as everyone should do.
The problem was something completely unrelated to the module. I was animating an*ngIf
in the component template but I had forgotten to mention it in the @Component.animations
for the component class.
@Component({
selector: '...',
templateUrl: './...',
animations: [myNgIfAnimation] // <-- Don't forget!
})
If you use an animation in a template, you also must list that animation in the component's animations
metadata ... every time.
I ran into similar issues, when I tried to use the BrowserAnimationsModule
. Following steps solved my problem:
Delete the node_modules dir Clear your package cache using npm cache clean Run one of these two commands listed here to update your existing packages
If you experience a 404 errors like
http://.../node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations
add following entries to map
in your 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 provided the solution on this github issue.
For me, I missed this statement in @Component decorator: animations: [yourAnimation]
Once I added this statement, errors gone. (Angular 6.x)
All I had to do was to install this
npm install @angular/animations@latest --save
and then import
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
into your app.module.ts
file.
BrowserAnimationsModule
to the @NgModule
decorator. It's also virtually identical to vikvincer's answer posted a few hours earlier.
After installing an animation module then you create an animation file inside your app folder.
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%)' }))
])
]);
}
Then you import this animation file to your any component.
In your component.ts file
import { routerTransition } from '../../router.animations';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss'],
animations: [routerTransition()]
})
Don't forget to import animation in your app.module.ts
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
My problem was that my @angular/platform-browser was on version 2.3.1
npm install @angular/platform-browser@latest --save
Upgrading to 4.4.6 did the trick and added /animations folder under node_modules/@angular/platform-browser
The animation should be applied on the specific component.
EX : Using animation directive in other component and provided in another.
CompA --- @Component ({
animations : [animation] }) CompA --- @Component ({
animations : [animation] <=== this should be provided in used component })
For me was because I put the animation name inside square brackets.
<div [@animation]></div>
But after I removed the bracket all worked fine (In Angular 9.0.1):
<div @animation></div>
I got below error :
Found the synthetic property @collapse. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.
I follow the accepted answer by Ploppy and it resolved my problem.
Here are the steps:
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.
It will resolve the error. Happy coding!!
Try this
npm install @angular/animations@latest --save
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
this works for me.
BrowserAnimationsModule
to the @NgModule
decorator.
--
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
---
@NgModule({
declarations: [ -- ],
imports: [BrowserAnimationsModule],
providers: [],
bootstrap: []
})
Simply add .. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
imports: [ .. BrowserAnimationsModule
],
in app.module.ts file.
make sure you have installed .. npm install @angular/animations@latest --save
Update for angularJS 4:
Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations
Solution:
**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 ],
...
Success story sharing
npm list --depth=0
lists the installed packages on your project├── @angular/platform-browser@4.3.5 ├── @angular/platform-browser-dynamic@4.3.5