使用Angular 4刷新会重复当前路线

时间:2018-10-07 04:29:44

标签: angular angular-router angular4-router

我正在一个项目中使用Angular 4。我没有使用Angular的丰富经验,应该修复一个错误。我认为这很简单,但是当我加载应用程序并获得/home路由时,如果单击刷新按钮,则会在URL上附加另一个/home

我的RouterModule配置如下:

RouterModule.forRoot([
    { path: '', redirectTo: 'home', pathMatch: 'full' },
    { path: 'home', component: HomeComponent },
    /* other paths mapping to components */
    { path: '**', redirectTo: 'home' }
])

对新手有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我无法在StackBlitz中重现此内容。下面的gif显示了您的配置如何按我的预期进行工作:

enter image description here

enableTracing并发布结果,以便我为您提供更多帮助:

RouterModule.forRoot(
  appRoutes,
  { enableTracing: true } // <-- insert this here
)

一种解决方案是使用绝对重定向(redirectTo: '/home')。但是,正如Viktor Savkin在他的blog post中所说:

  

本地重定向将单个URL段替换为另一个URL段。绝对重定向会替换整个URL。

但是,由于您在此处使用本地重定向,例如redirectTo: 'home',因此应将当前路径“ home”再次替换为“ home”,而不要附加它。此错误是否仅在生产或开发中发生?

答案 1 :(得分:0)

您需要从使用字符串更改为使用组件名称

TextView tv = (TextView) findViewById(R.id.sample_text);