【问题标题】:Angular 6 injecting window token in library serviceAngular 6 在库服务中注入窗口令牌
【发布时间】:2019-03-02 18:33:43
【问题描述】:

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

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

@Inject(WINDOW) private window: Window

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

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

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

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

【问题讨论】:

标签: angular6 window-object angular-library


【解决方案1】:

我正在使用相同的服务,并且像这样注入它:

@Inject(WINDOW) private _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-04
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2019-06-26
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多