无法路由器。导航到延迟加载的子模块

共1个回答, 标签: angular angular-routing angular-router-guards

我是新的角度。我从最新版本 8 开始。

我正在尝试编写一个应用程序。路由的初始状态是 path: '',我想根据这里基本路径中的一些条件来确定下一个路由。如果条件是真的,我需要将用户重定向到/home,如果失败,我需要重定向到/welcome。无论是在家里还是在欢迎的时候都是懒洋洋的。

我有一个警卫服务,在那里做出路由决定 (走哪条路)。

App-routing.ts

从 “@ angular/router” 导入 {Routes,RouterModule};
从 “./services/route-guard/home-guard.service” 导入 {HomeGuardService};


康斯特路线: 路线 =
[
{
路径:,路径匹配: “完整”,
可以激活: 【家庭服务】,
儿童:
[
{Path: “welcom”,loadchild: () => import ('./welcome.module')。
{Path: “home”,loadchild: () => import ('./home.module')。然后 (mod => mod.HomeModule)}
]
}
];

@ NgModule ({imports: [RouterModule.forRoot (routes)],exports: [RouterModule]}})
出口级 AppRoutingModule {}

Home-guard.service.ts

从 “@ angular/router/src/router _ state” 导入 {ActivatedRouteSnapshot,RouterStateSnapshot};
从 './storage/local-storage.service' 导入 {LocalStorageService};

@ Injectable ({providedIn: 'root'})
出口级 HomeGuardService 实施 CanActivate {

构造器 (专用路由器: 路由器) {}

{返回此。 check countryselection (state);}


私人支票国家选择 (州: RouterStateSnapshot): 布尔 {
如果 () {
这个。路由器。导航 (['home');
返回 true;
}
此。路由器。 navigateByUrl (“/welcom”);
返回 false;
}
}

现在,有了这个设置,angular 抱怨它不能匹配 URL 段的任何路由: “欢迎”

(最初,我在家庭警卫服务中设置了失败的条件,它将加载欢迎模块)

第1个答案

你的路线是一群守卫的孩子。

如果它没有和你说话:如果你因为警卫而无法进入该小组,你将因为警卫而无法进入儿童.

警卫跑了每个路线深度,如果失败并重定向,则不会到达以下路由。

为了让它工作,你必须把你的路线从守卫的路线中拿出来。

相关问题

从 angularcli 中的 HTTP Get 请求检索到的数组的范围 如何将角2前置快速 JS 变量导出到角2分量? Angular block web 请求使用的服务器吗? 无法路由器。导航到延迟加载的子模块