Angular 6更改路由而不重定向未显示在ActiveRoute上

时间:2018-09-18 02:23:25

标签: angular angular-routing

目的: 我正在创建搜索功能,希望能够搜索某些内容,更改URL,但不希望Angular使用查询字符串导航到路线。例如:如果我搜索世界“ hello”,则URL应更改为/ search?q = hello。需要注意的是,我有一个canDeactivate警卫,当返回false时,会将URL重置为条目页面。由于在这种情况下,我用来在浏览器中更改URL的方法没有更改路由,因此该方法恢复为/ search。

我到目前为止所拥有的: 我已经看到了一些示例,这些示例说明了如何通过使用location.golocation.replaceState来更改浏览器URL而不重定向Angular。

虽然这可用于更改浏览器URL,但我需要更改实际的路由器状态而不重定向页面。例如:如果我做类似的事情:

location.replaceState("search", "?parameter=testing") console.log(this.route.snapshot);

我未获得URL或任何参数键的替换状态。我只收到进入页面(在我的情况下是/ search)。

问题: 如何更改Angular路由器而不触发导航到新页面?或者,如何让我的canDeactivate防护人员重定向到正确的URL而不是进入状态?

1 个答案:

答案 0 :(得分:0)

不删除此内容以防其他人使用。 router.navigate可以按照我的需要正常工作,但是我订阅路由参数的行为触发了路由器导航更改中的事件。我将路由参数更新为仅在页面加载时触发,以防止无限循环并防止页面损坏。