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