我正试图以以下方式提供服务:
我的模块.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-对象