【问题标题】:getting opaquetoken to work in angular 2让 opaquetoken 在 Angular 2 中工作
【发布时间】:2016-09-02 09:10:36
【问题描述】:

您好,我无法让 opaquetoken 工作,是我忽略了什么吗?

Plunk

在 app.ts 中

export const SbToken = new OpaqueToken('myToken');
const testfile = 'Hello';

在 ngModule 中

providers: [{provide:SbToken, useValue:testfile}]

在 test.cmp 中

constructor(@Inject(SbToken) private token) {
      console.log(token)
    }

我遇到了错误(在朋克中,我猜它使用 systemJS)

(SystemJS) 错误:无法解析 TestComponent 的所有参数:(?)。

在我的 webpack 项目中,我遇到了类似的错误

Can't resolve all parameters for LoginPage: (NavController, SelfbitsAngular, ?).

【问题讨论】:

  • 您是否在test.cmp 中导入了SbToken
  • 看来我有一些蓝色缺陷。如果 Plunker 链接没有以某种方式突出显示,我永远不会看到它们。对此感到抱歉。该问题似乎与OpaqueToken 无关。如果您将其设为可选(@Optional() @Inject(SbToken) 或注入private service:TestService),则同样失败。如果您将组件移动到与模块相同的文件中,那么它工作正常。 plnkr.co/edit/lHIuc81COVEGv4SKGOKd?p=preview。我不知道到底是什么导致了这个问题。
  • 但这有点破坏了 opaqueToken 的使用,不是吗?如果我无法导出它们以供使用...
  • 正如我所说,问题与OpaqueToken 完全无关。这似乎是某种进口问题。如前所述,如果您不使用 OpaqueToken 而是按类型注入其他内容,则会出现相同的错误。

标签: angular dependency-injection token


【解决方案1】:

您在 app.module 和 test.component 之间存在循环依赖关系。 这个问题已经在angular 2 OpaqueToken回答了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多