Angular 4.3.x路由查询参数失败

时间:2017-09-11 19:05:00

标签: angular angular2-routing angular-routing

我一直试图让查询参数在两天的大部分时间内工作并且没有运气。我有一个非常简单的路线def:

{ path: 'search', component: SearchComponent, canActivate: [ AuthGuard ] }

我试图能够直接在搜索页面上找到在搜索控制器中查看的查询参数,如果它们在那里从查询参数中正确设置搜索:

http://localhost:5001/search?q=something&tt=234234234234

我已正确订阅了Activated路由,我甚至看到查询参数在控制台中被正确解析:

Object {q: "something", tt: "234234234234"}

但在我收到有关不匹配任何路线的错误后立即:

core.es5.js:1020 ERROR Error: Uncaught (in promise): Error: Cannot match any routes. URL Segment: 'search%3Fq%3Dsomething%26tt%3D234234234234'
Error: Cannot match any routes. URL Segment: 'search%3Fq%3Dsomething%26tt%3D234234234234'

我得到的,肯定没有这样的路线,为什么查询参数从主路段中提取出来?我正在使用一个主app模块来加载其他模块。在我的搜索模块中,我包括路由器模块,如:

RouterModule.forChild(searchRoutes)

我的主路由器模块有一个空路由,路由器模块如下:

{ path: '', component: AppComponent, pathMatch: 'full' }

RouterModule.forRoot(appRoutes)

两个RouterModule都在导入结束时加载。感谢您的任何见解!

2 个答案:

答案 0 :(得分:1)

查询参数应设置为routerLink.navigate方法的一部分,如下所示:

enter image description here

答案 1 :(得分:0)

  

我得到的,肯定没有这样的路线,为什么不从主路段中提取查询参数?

这是因为你正在使用pathMatch: 'full'。只需删除它,看它是否正常工作。