方法1:通过 Angular DOCUMENT injection token 获得
方法2:直接通过全局变量 location.
第二种方式在 SSR 模式下不工作。
方法1的实现:


如何消费这个 locationToken?


代码第16行必须加上 @Inject, 因为这不是一个基于类的依赖注入。
运行时的调用栈:

factory 函数执行的结果,是一个 Location 对象:

使用如下代码比较全局变量 location 和通过依赖注入得到 的 Location 对象,发现其实就是同一个实例。