, - :
app.module.ts
BrowserModule BrowserAnimationsModule, AppRoutingModule, (app-routing.module.ts).
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { MyComponent } from './my/my.component';
@NgModule({
declarations: [
AppComponent,
MyComponent,
],
imports: [
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MyComponent } from './my/my.component';
const routes: Routes = [
{ path: '', pathMatch: 'full', redirectTo: '/my' },
{ path: 'my', component: MyComponent,
data: {animation: 'AnimationsPage'}, // to reference later in animations.ts
}
];
@NgModule({
imports: [
BrowserModule,
BrowserAnimationsModule,
RouterModule.forRoot(routes)
],
exports: [RouterModule]
})
export class AppRoutingModule { }
app.component.ts
, animations: [ slideInAnimation ] animations: [ slideInAnimation ]:
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { slideInAnimation } from './animations';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
animations: [ slideInAnimation ]
})
export class AppComponent {
prepareRoute(outlet: RouterOutlet) {
return outlet && outlet.activatedRouteData &&
outlet.activatedRouteData['animation'];
}
}
animations.ts
import {
transition,
trigger,
} from '@angular/animations';
export const slideInAnimation = trigger('routeAnimation', [
transition('* => AnimationsPage', [
]);
app.component.html
<section [@routeAnimation]="prepareRoute(outlet)">
<router-outlet #outlet="outlet"></router-outlet>
</section>
, , ( BrowserAnimationsModule).