【问题标题】:Typescript Router navigate()打字稿路由器导航()
【发布时间】:2019-02-18 22:23:45
【问题描述】:

我正在努力解决这个错误:

NavigationError(id: 2, url: '/something/create?user=3#new', 错误: 错误:无法匹配任何路由。 URL 段:'something/create')

到目前为止我已经做到了:

some.component.ts

constructor( private router: Router ) {}

createNew() {
    const navigateToNewWithUser: NavigationExtras = {
        fragment: 'new',
        queryParams: {'user': this.user.id}
    };

    this.router.navigate(['/something/create'], navigateToNewWithUser);
}

some.component.html

<button class="btn add-button float-right jh-create-entity" (click)="createNew()">

some.route.ts

{
    path: 'something/create?user=:id#new',
    component: SomeComponent,
    resolve: {
        supervision: UserPageResolver
    },
    data: {
        authorities: ['ROLE_ADMIN'],
        pageTitle: 'home.create'
    },
    canActivate: [UserRouteAccessService]
}

所有其他路线都采用相同的模式并且运行良好。 我不明白,因为 /something/create?user=3#new 匹配我在 route.ts 中输入的内容

我正在处理使用 JHipster 生成的 Angular 6 项目。 我尝试更改 URL,删除#new,将?user=:id 放在末尾,等等,但我最终总是遇到同样的错误。

有什么想法吗?我在这里阅读了很多关于角度路由的问题,但还没有找到我的问题的答案。

如果您需要更多代码,请询问。

【问题讨论】:

  • 你试过queryParamsActivatedRoute吗?
  • 我做了,有一些不可读的错误,看起来像 Error : [object object],所以我回到了用 JHipster 生成的内容。
  • 首先将您的路由器路径更改为something/create,而不是path : something/create?user=:id#new。比使用 queryParams
  • 我做到了,现在我得到了path: 'supervision/create/:id',如下面的答案所示。请检查那里的cmets,仍然有错误。
  • 不要使用:id

标签: angular typescript routes navigation jhipster


【解决方案1】:

你也可以试试这样的,

 this.router.navigate(['/something/create'], { queryParams: { user: this.user.id } });

改变路线,

    { path: 'something/create',  component: SomeComponent }

【讨论】:

  • 这工作谢谢!删除:id 后,不再出现错误。
【解决方案2】:

告诉你的路由它可以通过简单的“:id”而不是“user=:id”来接收参数。它会自动解析为“user=2”

  {
    path: 'something/create/:id',
    component: SomethingComponent
  }

【讨论】:

  • 我做到了,并删除了#new,现在我得到了这个:NavigationError(id: 4, url: '/supervision/create?user=3', error: Error: Cannot match any路线。URL 段:“监督/创建”)
【解决方案3】:

如果你想在你的路由中使用哈希,你必须开启哈希定位策略 RouterModule.forRoot(routes, {useHash: true})

对于查询参数,更改您的路由器路径,如

path: 'something/create/:id

【讨论】:

  • 请查看我对达德尔博德回答的评论。
  • 你能把你的路线从/something/create/:id改成/supervision/create/:id@kazu
  • 我刚做了,路由和组件改了,还是一样的错误。
猜你喜欢
  • 2022-11-25
  • 2018-09-29
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2020-02-27
  • 1970-01-01
  • 2018-08-20
相关资源
最近更新 更多