【发布时间】:2018-08-07 17:10:48
【问题描述】:
当前页面为http://localhost:4200/foo。
案例1:如果我按下浏览器的重新加载按钮或在浏览器中输入相同的url,页面将重定向到http://localhost:4200(根路径)。
我希望页面保持相同的网址 (http://localhost:4200/foo)。
案例 2:如果我输入 http://localhost:4200/foo(相同的 url),页面将重定向到 http://localhost:4200(根路径)。
我还希望页面保留在我输入的相同网址中 (http://localhost:4200/foo)。
否则,如果页面是http://localhost:4200,我输入http://localhost:4200/foo,它工作正常。我可以正常通过 url 路径导航。问题只是当我走同一条路时。
我在 app.module.ts 中的根路径是:
const rootRouting: ModuleWithProviders = RouterModule.forRoot([
{
path: 'foo',
loadChildren: './foo/foo.module#FooModule'
},
{
path: '',
loadChildren: './bar/bar.module#BarModule'
},
], { });
而我在 foo.module.ts 中的路径是:
const fooRouting: ModuleWithProviders = RouterModule.forChild([
{
path: 'foo',
component: FooComponent
}
]);
OBS:这个问题Angular 5 - redirect page to homepage on browser refresh 与我的正好相反。现在,我不知道这种情况下 Angular 的默认行为是什么。
DiPix 修正后编辑:
我在 app.module.ts 中的根路径是:
const rootRouting: ModuleWithProviders = RouterModule.forRoot([
{
path: 'foo',
loadChildren: './foo/foo.module#FooModule'
},
{
path: '',
loadChildren: './bar/bar.module#BarModule'
},
], { });
而我在 foo.module.ts 中的路径是:
const fooRouting: ModuleWithProviders = RouterModule.forChild([
{
path: '',
pathMatch: 'full',
component: FooComponent
}
]);
编辑 2:
用谷歌浏览器调试,我设置了“保留日志”。
使用任何其他站点进行测试,如果您位于“www.anydomain.com/path”并重新加载浏览器,则 chrome 会写入 "Navigated to 'www.anydomain.com/path'。
使用我的应用程序进行测试,如果我在“http://localhost:4200/foo”并重新加载浏览器,chrome 会写入"Navigated to 'http://localhost:4200/'。
浏览器导航到根路径!
【问题讨论】:
-
您似乎没有设置任何根路由。找到根路径后找到子根。因此,您可以简单地为 '' 设置根路由,并将您的子路由用于通往该路径的子路由。 - angular.io/guide/router
-
@Igor 您能否检查一下您在应用程序中使用的任何通用组件,并且您正在将用户重定向到“/”。
-
我已经仔细检查过了。没有组件重定向到“/”。
-
我从零开始创建了一个新项目,并且使用了不同的文件夹结构。那里一切正常。我把这个问题留在这里是因为我仍然对它为什么不起作用感到困惑..
标签: javascript angular angular4-router