天天看点

Angular 如何使用 InjectionToken 的方式得到当前 location 信息

方法1:通过 Angular DOCUMENT injection token 获得

方法2:直接通过全局变量 location.

第二种方式在 SSR 模式下不工作。

方法1的实现:

Angular 如何使用 InjectionToken 的方式得到当前 location 信息
Angular 如何使用 InjectionToken 的方式得到当前 location 信息

如何消费这个 locationToken?

Angular 如何使用 InjectionToken 的方式得到当前 location 信息
Angular 如何使用 InjectionToken 的方式得到当前 location 信息

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

运行时的调用栈:

Angular 如何使用 InjectionToken 的方式得到当前 location 信息

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

Angular 如何使用 InjectionToken 的方式得到当前 location 信息

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

继续阅读