打字稿路由器导航()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打字稿路由器导航()相关的知识,希望对你有一定的参考价值。

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

NavigationError(id:2,url:'/ something / create?user = 3 #new',错误:错误:无法匹配任何路由.URL Segment:'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放在最后,还有更多,但我最终总是遇到同样的错误。

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

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

答案

你也可以尝试这样的事情,

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

改变路线,

    { path: 'something/create',  component: SomeComponent }
另一答案

告诉你的路线它只能通过“:id”而不是“user =:id”来接收参数。它会自动解析为“user = 2”

  {
    path: 'something/create/:id',
    component: SomethingComponent
  }
另一答案

如果要在路由中使用哈希,则必须打开哈希位置策略RouterModule.forRoot(routes, {useHash: true})

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

path: 'something/create/:id

以上是关于打字稿路由器导航()的主要内容,如果未能解决你的问题,请参考以下文章

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

反应导航 route.params 打字稿

打字稿:类型上不存在属性“导航”省略反应导航v5

json 打字稿片段

typescript 打字稿+角度1的启动片段

反应路由器+打字稿类型错误