Karmaを実行してAngular4アプリケーションをテストすると、このエラーFound the synthetic property @enterAnimation. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.
が表示されますが、モジュールは既にapp.module.tsにインポートされています
// animation module
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
...
@NgModule({
imports: [...
BrowserAnimationsModule,
...
],
そして、私のcomponent:
import { Component, OnInit } from '@angular/core';
import {
trigger,
state,
style,
animate,
transition
} from '@angular/animations';
@Component({
selector: 'app-about',
animations: [
trigger(
'enterAnimation', [
transition(':enter', [
style({ transform: 'translateX(100%)', opacity: 0 }),
animate('500ms', style({ transform: 'translateX(0)', opacity: 1 }))
]),
transition(':leave', [
style({ transform: 'translateX(0)', opacity: 1 }),
animate('500ms', style({ transform: 'translateX(100%)', opacity: 0 }))
])
]
),
trigger(
'enterAnimationVetically', [
transition(':enter', [
style({ transform: 'translateY(100%)', opacity: 0 }),
animate('500ms', style({ transform: 'translateY(0)', opacity: 1 }))
]),
transition(':leave', [
style({ transform: 'translateY(0)', opacity: 1 }),
animate('500ms', style({ transform: 'translateY(100%)', opacity: 0 }))
])]
)
],
...
アプリケーションはng serve
で完全に実行されますが、karmaでこのエラーが発生しました。
私は解決策を見つけました。 app.component.spec.ts
に同じインポートをインポートする必要がありました
// animation module
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
...
@NgModule({
imports: [...
BrowserAnimationsModule,
...
],
将来の読者:配置を忘れたときに、この正確なエラーを取得することもできます
animations: [ <yourAnimationMethod()> ]
@Component
tsファイル。
hTMLテンプレートで[@yourAnimationMethod]
を使用している場合です。
Angular 6アプリケーションの場合、コンポーネント。spec.tsファイルに次を追加することで問題を解決しました。
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
次に、同じコンポーネントのTestBed.configureTestingModule
のインポートにBrowserAnimationsModule
を追加します。spec.ts file
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LinkedSitesComponent ], imports: [ BrowserAnimationsModule ],
})
.compileComponents();
}));
angular 7以前のバージョンの場合、この行をapp.module.ts
ファイルに追加するだけで、同じファイルのimports配列モジュールにも忘れずに配置してください。
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";