J'ai mis à jour un projet Angular 4 en utilisant angular-seed et reçois maintenant l'erreur
Trouvé la propriété synthétique @panelState. Veuillez inclure "BrowserAnimationsModule" ou "NoopAnimationsModule" dans votre application.
Comment puis-je réparer cela? Qu'est-ce que le message d'erreur me dit exactement?
Assurez-vous que le package @angular/animations
est installé (par exemple en exécutant npm install @angular/animations
). Ensuite, dans votre app.module.ts
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
...,
imports: [
...,
BrowserAnimationsModule
],
...
})
Ce message d'erreur est souvent trompeur.
Vous pouvez avez oublié d'importer la BrowserAnimationsModule
. Mais ce n'était pas mon problème. J'importais BrowserAnimationsModule
dans la racine AppModule
, comme tout le monde devrait le faire.
Le problème était quelque chose de complètement indépendant du module. J'animais un *ngIf
dans le modèle de composant mais j'avais oublié de le mentionner dans le@Component.animations
pour la classe de composant.
@Component({
selector: '...',
templateUrl: './...',
animations: [myNgIfAnimation] // <-- Don't forget!
})
Si vous utilisez une animation dans un modèle, vous également devez la répertorier dans les métadonnées animations
du composant ... à chaque fois.
J'ai rencontré des problèmes similaires lorsque j'ai essayé d'utiliser la variable BrowserAnimationsModule
. Les étapes suivantes ont résolu mon problème:
npm cache clean
Si vous rencontrez un 404 erreurs comme
http://.../node_modules/@angular/platform-browser/bundles/platform-browser.umd.js/animations
ajoutez les entrées suivantes à map
dans votre 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 a fourni la solution sur ce problème de github .
Pour moi, j'ai manqué cette déclaration dans @Component Decorator: Animations: [yourAnimation]
Une fois que j'ai ajouté cette déclaration, les erreurs ont disparu . (Angulaire 6.x)
Tout ce que je devais faire était d'installer ce
npm install @angular/animations@latest --save
puis importer
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
dans votre fichier app.module.ts
.
Mon problème était que mon @ angular/platform-browser était sur la version 2.3.1
npm install @angular/platform-browser@latest --save
La mise à niveau vers 4.4.6 a résolu le problème et ajouté le dossier/animations sous node_modules/@ angular/platform-browser
Après avoir installé un module d'animation, vous créez un fichier d'animation dans votre dossier d'applications.
routeur.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%)' }))
])
]);
}
Ensuite, vous importez ce fichier d'animation sur votre composant.
Dans votre fichier Component.ts
import { routerTransition } from '../../router.animations';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss'],
animations: [routerTransition()]
})
N'oubliez pas d'importer une animation dans votre app.module.ts
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
L'animation doit être appliquée sur le composant spécifique.
EX: Utilisation de la directive animation dans un autre composant et fournie dans un autre.
CompA --- @Component ({
animations: [animation]}) CompA --- @Component ({
animations: [animation] <=== cela devrait être fourni dans le composant utilisé})
J'ai eu l'erreur ci-dessous:
Found the synthetic property @collapse. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.
Je suis la réponse acceptée par Ploppy et cela a résolu mon problème.
Voici les étapes:
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.
Cela résoudra l'erreur. Bonne codage !!