Angular 6 路由器过渡

Angular 6 router transition

目前在设置路由器转换时遇到一个奇怪的问题,我似乎无法理解,目前在 angular 6

appComponent.html 文件:

<navigation-component></navigation-component>
<loading-screen [@fadeAnimation]="prepareRoute(outlet)">
  <router-outlet #outlet="outlet"></router-outlet>
</loading-screen>
<footer-component></footer-component>

loadingScreenAnim.ts 文件:

export const loading_screen_anim =
  trigger('fadeAnimation', [
    transition('* <=> *', [
      query(':enter, :leave',
        [
           style({opacity: 0, position: 'fixed', width: '100vw', background:'#ffff', height: '100vh', 'z-index' : 10}),
        ],
      ),
        query(':enter',[
            animate('300ms ease',
            style({
                opacity:1,
            })
            )
        ])      
    ])
  ]);
  

appComponent.ts 文件:

@Component({
  selector: 'root',
  template:require('./app.component.html'),
  animations: [loading_screen_anim],
})
export class AppComponent {
  title = 'pogo-ng6';
  pagecontent:any;

  constructor(){
  }


  public prepareRoute(routerOutlet: RouterOutlet) {
    const routeData = routerOutlet.activatedRouteData['animation'];
    return routeData ? routeData : 'rootPage';

  }

}

和相对 css:

/deep/ router-outlet~* {
    position: absolute;
    width: 100%;
    height: 100%;
}

有什么我不明白为什么动画目前没有触发,我也找到了解决方案但是它干扰了我的页脚。

我尝试在 HTML 中的 routeroutlet 上对您的 stackblitz 进行如下更改,并且您的 fadeAnimation 有效:

<main [@fadeAnimation]="routerOutlet.isActivated ? routerOutlet.activatedRoute : ''">
  <router-outlet #routerOutlet="outlet"></router-outlet>
</main>

当路由被激活时,它会触发动画。使用此技术时,app.component.ts 中的这段代码不是必需的:

  //  public prepareRoute(routerOutlet: RouterOutlet) {
  //   const routeData = routerOutlet.activatedRouteData['animation'];
  //   return routeData ? routeData : 'rootPage';