繁体   English   中英

serviceFactory 作为提供者 Object 中的依赖项(deps:[]) - 有可能吗?

serviceFactory as a dependecy (deps: []) in Provider Object - is it possible?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在 app.module 中的提供者定义如下:

{
                    multi: true,
                    deps: [ServiceA, ServiceB],
                    provide: HTTP_INTERCEPTORS,
                    useClass: HttpResponseInterceptor,
}

它工作正常。 问题是,我需要 ServiceB 可以由工厂 function 配置,而且 serviceB 是可选的,但是这样的东西不起作用

// Factory function
serviceBFactory = (param) => { // returns instance of my service or null, depends on param }

...
deps: [ ServiceA, { provide: ServiceB, useFactory: serviceBFactory } ]
...

我得到的错误:

Error: StaticInjectorError(AppModule)[InjectionToken HTTP_INTERCEPTORS -> [object Object]]: 
  StaticInjectorError(Platform: core)[InjectionToken HTTP_INTERCEPTORS -> [object Object]]
NullInjectorError: No provider for [object Object]!

是否有任何特殊语法或设计不可能?

1 个回复

让我回答我自己的问题;-) 所以我决定手动构建 InjectionToken:

export function serviceBFactory() {
    if (APP_CONFIG.serviceBNeeded) {
        return new ServiceB();
    } else {
        return null;
    }
}

const ServiceBToken: InjectionToken<ServiceB> = new InjectionToken<ServiceB>(
  'ServiceB instance or Null', 
  {
    providedIn: 'root',
    factory: serviceBFactory,
  }
);

然后将其传递给 deps 数组...

deps: [ServiceBToken]

我不知道它是否可以,或者是否有更好的方法来实现我想要的,但这个解决方案至少有效。

2 在 Spacemacs 中向 deps.edn 添加依赖项

我正在尝试将依赖项添加到 deps.edn 键入SPC rap 。 当我选择一个依赖项时,我收到以下消息: cljr--insert-into-leiningen-dependencies: Search failed: ":dependencies" 。 所以显然 clj-refactor 无法识 ...

5 grunt-copy-deps不会复制依赖项

Gruntfile.js : 我期望(总的来说是这样)它将所有内容从package.json作为非开发依赖项提到的node_modules复制到我的webapp目录中。 这是package.json : 但是webapp/libs/不会出现,并且文件不会被复制。 从命令行运行 ...

8 将查询参数注入 Angular 中的依赖提供程序工厂

我希望window.location搜索参数中的一个值传递给依赖项提供程序工厂的主体,理想情况下以惯用的 Angular 方式。 用例:编写我的第一个 Angular 应用程序我在一个端口上运行应用程序,在另一个端口上运行后端服务器。 我想将&amp;backend=localhost:12345 ...

9 如何使用Angularjs将依赖项注入提供程序中?

是否可以通过提供者方法进行DI? 在这个例子中 将$http注入服务似乎是正确的实现,但是在提供者方法中不起作用,并且会引发错误: 未知提供者:$ http 提供者方法是否可以与DI一起使用以注入服务? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM