Angular | useFactory将参数传递给服务



我正试图以以下方式提供服务:

我的模块.module.ts

import { NgModule } from '@angular/core';
import { MyService} from './my-service.service';
@NgModule({
providers: [
{
provide: MyService,
useFactory: () => new MyService(2),
},
],
})
export class MyModule {}

我的服务。服务。ts

import { Inject, Injectable } from '@angular/core';

@Injectable()
export class MyService {
constructor(
private n: number
) {
console.log(this.n);
}
}

但我收到以下错误:

错误NG2003:类"MyService"的参数"n"没有合适的注入令牌。考虑使用@Inject装饰器来指定注入令牌

有一种变通方法,使用Inject(''),但这似乎很奇怪,文档中没有提到:

我的服务。服务。ts

import { Inject, Injectable } from '@angular/core';

@Injectable()
export class MyService {
constructor(
// weird fix
@Inject('') private n: number
) {
console.log(this.n);
}
}

我使用的Angular版本是13.3.11

您可以尝试使用useValue:

@NgModule({
providers: [
MyService {
provide: "propertyName",
useValue: "2",
}
],
})
@Injectable()
export class MyService {
constructor(
@Inject('propertyName') private n: string
) {
console.log(this.n);
}
}

https://angular.io/guide/dependency-injection-providers#injecting-对象

最新更新