【问题标题】:unable to subscribe to router in a container component - Angular2 routing无法订阅容器组件中的路由器 - Angular2路由
【发布时间】:2016-04-27 15:17:50
【问题描述】:

目前我有:

import { Router } from 'angular2/router';

@Component({...})

export class Index {
  constructor(public router: Router) {
    this.router.subscribe({...});
  }
}

该组件还有其他功能,但与问题无关

我尝试将调试器和 console.log() 放入订阅函数中,但无论我做什么,我都无法发生任何事情。我也尝试将 router.subscribe() 移动到 ngOnInit() ,结果相同。没有。

我需要能够根据 URL 的状态将资源从“帐户”切换到“用户”或其他资源,并进行适当的 API 调用。目前我不明白为什么这不起作用。我有什么明显的遗漏吗?多次订阅路由器有限制吗?我已经在另一个组件中这样做了,它工作正常。

【问题讨论】:

    标签: angular angular2-routing


    【解决方案1】:

    我想你想要

    this.router.root.subscribe({...});
    

    获取所有路线导航事件。

    【讨论】:

    • 这行得通,谢谢!但是,它带来了一个小问题。现在,每次发生更改时,我都会订阅路由器,而不仅仅是在我更改站点某个部分内的路径时。
    • 您可以尝试this.router.parent.subscribe(),但这有点脆弱,因为组件取决于嵌套级别。无论如何,路由器都会发生更大的变化。如果它对你有用,我会去尝试并在更新的路由器可用时重新访问。
    • 我的组件的父路由器是根路由器,所以没有多大帮助。您是否知道有任何方法可以在其他组件中订阅根路由器?我想避免多次订阅路由器
    • 您可以将路由器注入到转发路由器事件的服务中。为什么不想多次订阅?
    • 有人告诉我,在许多地方订阅同一个 observable 并不符合最佳利益。似乎是多余的。但如果没有更优雅的解决方案,我可能不得不
    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多