Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 8 Animations Error on Lazy Loaded Module - Found Synthetic Property

I have 2 modules, the app.module and a lazy.module. As you can imagine, the lazy.module is lazy loaded into the app.module via router.

const routes: Routes = [
  { path: '', loadChildren: () => import('./lazy/lazy.module').then(m => m.LazyModule) }
];

Now, in the app.module, I am importing the BrowserModule and the BrowserAnimationsModule

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

In the app.module, I have an animation called flyInOutAnimation

export const flyInOutAnimation = trigger('flyInOut', [
  state('out', style({
    transform: 'translateX(-250px)',
    display: 'none'
  })),
  state('in', style({
    transform: 'translateX(0)'
  })),
  transition('in <=> out', animate('400ms ease-in-out'))
]);

In the lazy.module, I have a FlyoutComponent that uses the above animation.

@Component({
  // ...
  animations: [ flyInOutAnimation ]
})

And the usage of the FlyoutComponent is as follows

<app-flyout [@flyInOut]="showFlyout ? 'in' : 'out'"></app-flyout>

Now, when you load the component that is using the app-flyout, you get the following error

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

I have created a Stackblitz to reproduce the error.

like image 940
A. Dixon Avatar asked Sep 20 '19 17:09

A. Dixon


1 Answers

In order to calm down Angular compiler you should define animations property within @Component metadata for the component where you use that @flyInOut animation.

It's PersonListComponent in your case:

@Component({
  ...
  animations: [ flyInOutAnimation ] <=========== add this
})
export class PersonListComponent implements OnInit {

Forked Stackblitz

like image 81
yurzui Avatar answered Oct 12 '22 09:10

yurzui