我正在努力解决此错误:
NavigationError(id: 2, url: '/something/create?user=3#new', error: 错误:无法匹配任何路由。网址细分:"某物/创建"(
到目前为止,我已经做到了这一点:
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"来接收参数。 它将自动解析为"用户=2">
{
path: 'something/create/:id',
component: SomethingComponent
}
如果要在路由中使用哈希,则必须打开哈希位置策略RouterModule.forRoot(routes, {useHash: true})
对于查询参数,更改您的路由器路径,例如
path: 'something/create/:id