打字稿路由器导航()
Typescript Router navigate()
我正在为这个错误而苦恼:
NavigationError(id: 2, url: '/something/create?user=3#new', error:
Error: Cannot match any routes. 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
中输入的内容
我正在处理 Angular 6 个使用 JHipster 生成的项目。
我尝试更改 URL、删除 #new
、将 ?user=:id
放在末尾等等,但我总是遇到同样的错误。
有什么想法吗?我在这里阅读了很多关于 angular 路由的问题,但还没有找到我的问题的答案。
如果您需要更多代码,请询问。
告诉你的路线它可以通过简单的“:id”而不是"user=:id"接收参数。它会自动解析为 "user=2"
{
path: 'something/create/:id',
component: SomethingComponent
}
如果你想在你的路由中使用哈希,你必须打开哈希定位策略
RouterModule.forRoot(routes, {useHash: true})
并且对于查询参数,将您的路由器路径更改为
path: 'something/create/:id
你也可以这样试试,
this.router.navigate(['/something/create'], { queryParams: { user: this.user.id } });
将路线更改为,
{ path: 'something/create', component: SomeComponent }
我正在为这个错误而苦恼:
NavigationError(id: 2, url: '/something/create?user=3#new', error: Error: Cannot match any routes. 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
我正在处理 Angular 6 个使用 JHipster 生成的项目。
我尝试更改 URL、删除 #new
、将 ?user=:id
放在末尾等等,但我总是遇到同样的错误。
有什么想法吗?我在这里阅读了很多关于 angular 路由的问题,但还没有找到我的问题的答案。
如果您需要更多代码,请询问。
告诉你的路线它可以通过简单的“:id”而不是"user=:id"接收参数。它会自动解析为 "user=2"
{
path: 'something/create/:id',
component: SomethingComponent
}
如果你想在你的路由中使用哈希,你必须打开哈希定位策略
RouterModule.forRoot(routes, {useHash: true})
并且对于查询参数,将您的路由器路径更改为
path: 'something/create/:id
你也可以这样试试,
this.router.navigate(['/something/create'], { queryParams: { user: this.user.id } });
将路线更改为,
{ path: 'something/create', component: SomeComponent }