- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一些背景信息:我已经使用 Nswag 和 ASP Net Core 创建了一个生成的 API 客户端。要为 api 客户端设置基本 url,使用以下代码:
export const API_BASE_URL = new InjectionToken<string>(
"API_BASE_URL"
);
@Injectable({
providedIn: "root",
})
export class ApiClient {
// Omitting code for brevity
constructor(
@Inject(HttpClient) http: HttpClient,
@Optional() @Inject(API_BASE_URL) baseUrl?: string
) {
this.http = http;
this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : "";
}
// Etc..
}
现在我需要注册那个 API_BASE_URL
以便它可以被注入(inject)到 NotificatiesClient
中。我在我的 app.module.ts 中完成了以下操作:
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, AppRoutingModule, HttpClientModule],
providers: [
{
provide: NOTIFICATIESERVICE_API_BASE_URL,
useFactory: (serviceToInject: ServiceToInject) => serviceToInject.GetBaseUrl(),
},
],
bootstrap: [AppComponent],
})
export class AppModule {}
假设 ServiceToInject
是这样的服务:
// Note 1: I tried with providedIn: 'root', but that did not make a difference.
// Note 2: This one is stored in src/app/core/services/ServiceToInject.service.ts
@Injectable()
export class ServiceToInject{
// Service here
}
但是当我尝试使用以下代码在我的 app.module.ts
中为 API_BASE_URL
注册提供程序时:
providers: [
{
provide: API_BASE_URL,
useFactory: (serviceToInject: ServiceToInject) => serviceToInject.GetBaseUrl(),
},
],
我收到一个Can't resolve all parameters for useFactory
错误。
有人知道如何解决这个问题吗?
最佳答案
就我而言,答案非常简单!
提供程序代码需要一个名为 deps
的属性,其中包含我在 useFactory
中使用的依赖项类型,如下所示:
{
provide: NOTIFICATIESERVICE_API_BASE_URL,
deps: [AppConfigService],
useFactory: (serviceToInject: ServiceToInject) => serviceToInject.GetBaseUrl(),
},
希望对大家有所帮助!
关于angular - 无法将服务注入(inject) Angular Provider UseFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65254083/
我想弄清楚如何在 Angular 11 中使用 useFactory 作为异步函数。现在我有这个: import { ApolloClientOptions } from 'apollo-client
作为 Angular 的初学者,我在尝试通过 angular-cli 构建我的应用程序时遇到了一个问题。 关注此tutorial之后: 我的 appModule 看起来像: ... providers
useValue 和 useFactory 提供者有什么区别? useFactory 似乎返回一个值,useClass 也返回一个值。 最佳答案 useFactory 采用预期返回值的工厂函数,并且还
HelloComponent 获取一个 SampleService 实例,定义一个服务提供者。当HelloCompoment被销毁时,我不明白为什么SampleService会存活。 如果 Hello
我正在努力集成 angular2-jwt 包。我用自定义配置选项编写了以下函数 import { Http, Headers, RequestOptions } from '@angular/http
一些背景信息:我已经使用 Nswag 和 ASP Net Core 创建了一个生成的 API 客户端。要为 api 客户端设置基本 url,使用以下代码: export const API_BASE_
我使用 Angular AOT 编译器版本 4.1.3 我有一个组件库,它导出一个工厂方法,然后用于提供服务: export function libServiceFactory(itemId: st
一些背景信息:我已经使用 Nswag 和 ASP Net Core 创建了一个生成的 API 客户端。要为 api 客户端设置基本 url,使用以下代码: export const API_BASE_
app.module.ts bootstrap: [AppComponent], declarations: [AppComponent], imports: [
我正在动态创建元素,其中一个元素正在使用 @Inject解析为工厂的 token 。 问题是工厂实例缓存在节点索引上。一旦我的元素从 View 中消失并返回,我希望得到对我的工厂函数的调用;但我不。相
类型 '(configService: ConfigService) => Promise' 不可分配给类型 '(...args: any[]) => ({ retryAttempts?: numbe
我实现了 http 拦截器服务,它可以工作,但我的问题是我不知道如何在提供声明中注入(inject)我自己的服务。 我在控制台中收到运行时错误:No provider for MyService。 H
我使用 window.location 设置可注入(inject)。在我靠近导入的模块中,我定义了变量 const flag = window.location.search.includes('fl
我想使用带有 useFactory 的简单提供程序,它也将使用 deps(学习目的)。 所以我创建了这个 plnkr : //app.module.ts ... const randomFactory
我是 Angular 4 的新手,我刚刚通过 Angular Cli 创建了一个项目,但出现错误 Uncaught TypeError: useValue,useFactory,data is not
我有一个常规的NestJS应用程序,其中有一个负责创建测试数据的模块。。在AppService类中,我调用它来创建应用程序启动时的数据,如下所示。而且它运行得很好。。然而,自从我在应用程序中添加了用于
我是一名优秀的程序员,十分优秀!