我在app-routing.module中定义了一个重定向,并且没有想法为什么它不起作用。如果我使用默认路径“”(当前已注释掉的代码)而不是重定向,那么它可以正常工作。
@NgModule({
imports: [
RouterModule.forRoot([
{
path: "actions",
component: ActionsComponent
},
//{
// path: "",
// component: LoginComponent
//}
{
path: "",
redirectTo: "/login",
pathMatch: "full"
}
])
],
exports: [
RouterModule
]
})
有什么想法吗?代码位于http://plnkr.co/edit/y970zDKDZRIZ5LQA8v1T?p=preview
答案 0 :(得分:1)
在您的复制中,您没有真正的/登录路径,因为第二个路由器插座不知道应该处理登录路由的哪个子节点。
在@Ha Hoang的回答中,如果你在下面发表评论:
{ path: "", redirectTo: "login", pathMatch: "full" }
你的应用仍然有用!因为(路径:"")在login-routing.module中重写:
{ path: '', component: LoginComponent }
但我认为@Ha Hoan的方式不合逻辑,因为路径=""不应该加载LoginComponent它应该重定向到/ login url然后路径="登录"应该加载LoginComponent我的建议是:
在app-routing.module中:使用/ login / loginDetails而不是/ login
{
path: "",
redirectTo: "/login/loginDetails",
pathMatch: "full"
}
然后你的plunker工作正确,路由的结构更好。 http://plnkr.co/edit/YENJ4Wm26qMty5mOR1dA?p=preview
答案 1 :(得分:0)
您应该更改以下内容:
在app-routing.module.ts中:使用'login'而不是'/ login'
{ 路径:“”, redirectTo:“登录”, pathMatch:“full” }
在app / login / login-routing.module中:
RouterModule.forChild([
{
path: 'login',
children: [
{ path: "loginDetails", component: LoginDetailsComponent },
{ path: "moreLoginDetails", component: MoreLoginDetailsComponent }
]
},
{ path: '', component: LoginComponent }
])
对我有用!
答案 2 :(得分:0)
要从您的路径中删除/
,例如/login
至login
,只需将其添加到index.html
<base href="/">
如果您需要重定向无效的网址,可以使用
{ path: '**', redirectTo: 'login' }
答案 3 :(得分:0)
我无法回复sigit_prayoga的评论,但如果您使用
{ path: '**', redirectTo: 'login' }
然后你需要将放在路线的底部,否则它下面的所有内容都会重定向。
这对我有用。
答案 4 :(得分:0)
我看到的唯一问题是你没有名为'login'
的路线。所以路由器首先进入空''
- 路由。在这里,他注意到他必须导航到login
路线,但他找不到这样的路线。我认为这应该是解决方案:
RouterModule.forRoot([
{
path: "actions",
component: ActionsComponent
},
{
path: "login",
component: LoginComponent
},
{
path: "",
redirectTo: "/login",
pathMatch: "full"
}
])
修正了plunker: http://plnkr.co/edit/xvt6RdoQWDFakT12ZNRH?p=preview
答案 5 :(得分:0)
根据Angular 2人@ https://github.com/angular/angular/issues/12133
,这似乎正在按预期工作基本上错误信息是误导性的,我必须在路线中有一个默认路径。因此,在
中更改login-route.module.ts中的以下内容 children: [
{ path: "loginDetails", component: LoginDetailsComponent },
{ path: "moreLoginDetails", component: MoreLoginDetailsComponent }
]
到
children: [
{ path: "loginDetails", component: LoginDetailsComponent },
{ path: "", component: MoreLoginDetailsComponent }
]
会解决我的问题。