需要澄清:订阅路由器事件 Aurelia (Typescript)

Clarity needed: subscribing to router events Aurelia (Typescript)

我正在尝试根据提供的 URL 的参数动态更改页面的标题标签。我通过订阅 Aurelia 路由器的 "router:navigation:success"(或 "complete")事件来做到这一点。

如果页面生命周期从头到尾完成,这工作正常,但是,当 URL 在同一页面上更改(使用 this.router.navigateToRoute)之前,事件我订阅的内容没有触发,因此标题标签没有更改。

例如:

  1. 我导航到 /needs/volunteer。标题是 All Volunteering Opportunities
  2. 在此页面上,在一组下拉菜单中进行了选择,并使用 this.router.navigateToRoute 将 url 更改为 /needs/volunteer/city-abc。标题标签仍然显示为 All Volunteering Opportunities,因为我订阅的事件没有触发。
  3. 如果我在 URL 栏上按回车键,URL 指向 /needs/volunteer/city-abc,标题标签将显示为 Volunteering Opportunities in City ABC。这就是我所期望的。

有没有办法订阅指向 this.router.navigateToRoute 的事件?

我们目前拥有上述功能的原因是,当我们使用 URL 参数加载页面时,我们会自动将关联的下拉菜单设置为所选值。这也允许人们共享 URL,从而共享页面内容。

在此先感谢您的帮助。

编辑:

我注意到 this.router.navigateToRoute 存在 trigger: false/true 的选项。我目前将其设置为 false,然后路由器会显示上述功能。

如果我设置 trigger: true,我会得到预期的效果,但我注意到此时会发生完整的页面重新加载。

我显然不希望这种情况发生,所以我还在研究如何订阅与this.router.navigateToRoute相关的事件。

解决方案的简单答案是在完成 this.router.navigateToRoute 方法后 emit/publish router:navigation:complete 事件。