使用Angular

时间:2018-03-08 11:22:18

标签: angular typescript angular-routing

我想在网址上添加其他参数。在我的搜索页面中搜索后,我有这个网址: http://localhost:62265/result?search=sas

这是结果页面的链接。其中“sas”是搜索的关键字。

现在同一页面中会有其他过滤器。我会进一步过滤我当前的结果。示例:按国家/地区定位,因此网址应如下所示。

http://localhost:62265/result?search=sas&country=Germany

这是我目前的实施方式。

SearchComponent.ts

//when a button is clicked it goes to this function.
search(){
  this.router.navigate(['/result'], { queryParams: { search: this.query } });
  //this is what I use to go to the result page.
}

AppModule.ts

const routes: Routes = [
  //other paths
  { path: 'result', component: ResultComponent }
 ];

问题是如何在添加其他功能后将“& country = Germany”添加到同一组件中?我正在摆弄路由器模块的功能,找不到能够完成工作的人。

2 个答案:

答案 0 :(得分:0)

我认为您需要使用

扩展您的对象
{ search: this.query,
 country: [your country reference] }

答案 1 :(得分:0)

为路线创建一个构建queryParams的函数。根据您的条件在对象中添加参数。例如,您可以这样做:

buildQueryParams() {
    const params: any = {};

    if(this.query) { Object.assign(params, {search: this.query}); }
    if(this.country) { Object.assign(params, {country: this.country}); }
    if(this.otherParam) { Object.assign(params, {otherParam: this.otherParams}); }

    return params;
}

然后您可以在search()方法中调用该函数:

search(){
  this.router.navigate(['/result'], { queryParams: buildQueryParams() });
}