延迟加载获取当前路由的模块

时间:2019-03-20 13:36:55

标签: angular typescript lazy-loading

如果某个模块已在延迟加载应用程序中路由,我将尝试排除某个组件。

例如,在我的AppComponent中,我正在使用路由器出口以及某个组件上方:

<div>
    <my-component></my-component>   --> don't show if module is StartModule
    <router-outlet></router-outlet>
</div>

我的路由配置如下:

export const routes: Routes = [
  {
    path: 'start',
    loadChildren: './start/start.module#StartModule',
  },
  {
    path: 'first',
    loadChildren: './first/first.module#FirstModule'
  },
  {
    path: 'second',
    loadChildren: './second/second.module#SecondModule'
  }
];

是否有一个参数来接收路由模块以进行类似

的检查
isStartModule(): boolean {
    if (routedModule == StartModule) {
        return true; 
    }
}

<my-component *ngIf="!isStartModule()"></my-component>

2 个答案:

答案 0 :(得分:1)

constructor(private router: Router ) {}

尝试检查

this.router.url === '/start' 

然后做点事情


  1. 您可以订阅事件

     this.router.events.pipe(
        filter((event) => event instanceof NavigationEnd))
        .subscribe(x => {
            console.log('THIS IS FOR TEST', x['url']);
            }
        );
    

答案 1 :(得分:0)

您可以像这样在应用程序组件中设置路线更改侦听器:

import { Router, NavigationEnd } from '@angular/router';
import { filter } from 'rxjs/operators';
constructor(private router: Router)
{
  router.events.pipe(
  filter(event => event instanceof NavigationEnd) ).subscribe((event: NavigationEnd) => {    
    console.log(event.url);
    if(event.url == 'start'){
    // do you stuff
    }
});}