代码之家  ›  专栏  ›  技术社区  ›  cucuru

将解析器与路由器一起使用

  •  2
  • cucuru  · 技术社区  · 8 年前

    对于同一组件,我有两条不同的路径,它们使用解析数据:

    //app.routing:
    const APP_ROUTES: Routes = [
    {
        path: '',
        canActivate: [LoggedInGuard],
        children: [
            {path: '', redirectTo: '/path1', pathMatch: 'full'},
            {path: 'path1', loadChildren: 'app/myModule.module#MyModuleModule'},
            {path: 'path2', loadChildren: 'app/myModule.module#MyModuleModule'}  
        ]
    },
    {path: '**', redirectTo: ''}
    ];
    
    
    export const routing = RouterModule.forRoot(APP_ROUTES);
    

    在myModule中。路由:

    const MY_MODULE_ROUTES: Routes = [
        {path: '', component: MyModule2Component, resolve: {data: MyModule2Resolver}}
    ];
    
    
    export const myModuleRouting = RouterModule.forChild(MY_MODULE_ROUTES);
    

    所有这些都很好。

    现在,我想从MyModule2Resolver控制路由:

    @Injectable()
    export class  MyModule2Resolver implements Resolve<any[]> {
     constructor(private activatedRoute: ActivatedRoute, private router: Router) {}
    
     resolve(): Promise<any> {
          //Different action depending on path1 or path2 but
         // I have not this info in activatedRoute or router
     }
    }
    

    有可能吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Suren Srapyan    8 年前

    你的 activatedRoute 包含属性 url ,其中包含有关 url地址 . 使用它并编写逻辑