2016-08-08 36 views
0

我已经实现了一个SearchComponent,用户可以在其中修改参数(如搜索项和构面)以筛选结果。我希望使用当前选定的参数更新网址,以便用户可以通过书签或通过电子邮件发送链接。构建具有查询参数的Angular 2地址

我的问题是关于更新URL为,包括参数。我知道我应该使用Location服务,特别是go()方法,但我似乎无法弄清楚使用哪种方法来获取我的参数集合(数组或JavaScript对象)并将其转换为适当格式的查询字符串基于当前的LocationStrategy。我是否应该循环访问集合并直接连接这些值以构建出单个字符串?

代码段

发布这个我继续与API玩耍后。据我了解,使用HashLocationStrategy并给予下述网址

#/search 

this.location.path(false)输出

/search 

(作为一个侧面说明,中this.location.path(true)输出/search

当我使用Routing将url更改为

#/search;searchTerms=ftp 

this.location.path(false)输出逻辑(种)成为

/search;searchTerms=ftp 

我已经关注的几个点

  1. 如前所述,建立了网址似乎需要我来连接名称值对,而不是提供一个辅助方法来处理它。
  2. 现在,给定的组件不知道用于实例化所述组件的路由。实际的路由取决于你放在路由器配置中的内容。但现在,为了更新路线,我不能只说“添加这个特定的当前路线”,我实际上需要从当前网址中提取该前缀以用于更新的网址。
  3. 与#2项目有关,实际上我需要从path()返回的值并将其拆分或得到;字符的索引,以便我可以重新使用非参数部分?

最终,在我的脑海里,更新基于组件内的变化路径组件似乎是一个很常见使用情况尚API 似乎使它非常不方便和难看手动过程。我希望我失去了一些东西......

回答

0

我的意思是,如果你真的想采取另一种方法,你可以使用encodeURIComponent(btoa(JSON.stringify(object)))生成的查询字符串和 JSON.parse(atob(decodeURIComponent(string)))把它回到对象...

但我建议循环,如你所说。

+0

我正在修改网址的问题不仅仅是建立参数。我更新了这篇文章,以更好地解释关于位置服务和API的所有(相关)问题(或者缺乏......) – Jason