0

我有一个包含此网站帖子代码的库: https ://brianflove.com/2018/01/11/angular-window-provider/

在我的库中,我还有一项服务,我想在其中访问窗口对象。但是,在构造函数中添加以下内容不起作用:

@Inject(WINDOW) private window: Window

尝试使用 cli 构建库时,出现以下错误:

收集的元数据包含将在运行时报告的错误:无法解析类型窗口。

我可以将其更改为使用任何类型而不是 Window,或者添加 @dynamic 作为注释,然后它就可以构建了。有没有更好的方法来做到这一点?

我不确定这是否是正确的方法,因为它还依赖于消费者在其主应用程序模块提供程序数组中设置 WINDOW_PROVIDERS。

4

1 回答 1

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
  ]
...
于 2019-03-08T10:55:08.870 回答