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

using resolver with router

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

//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.routing中:

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
 }
}

可能吗?

您的 activatedRoute 包含 属性 url,其中包含有关 url 的信息。使用它并编写你的逻辑