【问题标题】:Angular Router error redirecting to path with dynamic parameter角度路由器错误重定向到具有动态参数的路径
【发布时间】:2021-08-04 13:43:00
【问题描述】:

当用户访问 root (localhost:4200) 时,我想将用户重定向到具有唯一 UUID 的路径。

但我得到了这个错误

ERROR 错误:未捕获(在承诺中):错误:无法匹配任何路由。 URL 段:'document/4fdb309b-df59-4da8-a32d-5265f7925bba'

错误:无法匹配任何路由。 URL 段:'document/4fdb309b-df59-4da8-a32d-5265f7925bba'

下面是我的路由器模块代码段

import { v4 as uuidv4} from 'uuid'

const routes : Routes = [
  {path : '', redirectTo : '/document/'+uuidv4(), pathMatch: 'full'},
  {path : 'documents/:id', component: DocumentComponent}
]

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule {
}

不知道怎么回事!

【问题讨论】:

    标签: javascript angular angular-routing


    【解决方案1】:

    很可能是由于路线排序。尝试重新安排路线

    const routes : Routes = [
      {path : 'documents/:id', component: DocumentComponent},
      {path : '', redirectTo : '/document/'+uuidv4(), pathMatch: 'full'}
    ]
    

    请注意,Angular 路由器使用first-match wins strategy,并且数组中路由的顺序很重要。

    【讨论】:

    • 是的,就是这样,现在工作正常。谢谢
    【解决方案2】:

    您不能声明动态路由路径。 uuid4() 每次都会生成不同的 uuid,并且您没有将那么多组件映射到路由。您可能还希望将 uuid 作为路由参数。将第一条路线更改为跟随,看看是否有帮助。

    {path : '', redirectTo : '/document/someComponent', pathMatch: 'full'},
    

    【讨论】:

    • 这没有帮助,得到了同样的错误。我想每次都生成新的 ID 并将用户重定向到同一个组件。有没有其他方法。
    • 如果你重定向到同一个组件,那么为什么不给出静态路径呢?检查我的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    相关资源
    最近更新 更多