我有一个图书馆,提供此网站帖子中的代码: https://brianflove.com/2018/01/11/angular-window-provider/
在我的库中,我还有一个服务,可以访问窗口对象。但是,在构造函数中添加以下内容无效:
@Inject(WINDOW) private window: Window
尝试使用cli构建库时,发生以下错误:
收集的元数据包含一个错误,该错误将在运行时报告: 无法解析窗口类型。
我可以将其更改为使用任何类型,而不是Window,或者添加@dynamic作为注释,然后它会生成OK。有更好的方法吗?
我不确定这是否是正确的方法,因为它还依赖消费者在其主应用程序模块提供程序数组中设置WINDOW_PROVIDERS。
答案 0 :(得分:0)
我正在使用相同的服务,并且正在像这样注入它:
@Inject(WINDOW) private _window: Window
请注意window变量前面的下划线(_)。我怀疑您无法命名变量窗口,因为这将与内置的浏览器窗口对象冲突。 除此之外,请确保要在组件/服务中这样导入注入令牌:
import { WINDOW } from '[path to your services]/window.service';
在您的app.module.ts
中(或在其中使用它的任何模块中):
import { WINDOW_PROVIDERS } from '[path to your services]/window.service';
...
providers: [
WINDOW_PROVIDERS
]
...