在Angular 9中,DI(依赖注入)可能会出现一些问题。以下是一些常见问题及其解决方法,包含代码示例:
// 依赖项的服务类
@Injectable()
export class MyService {
// ...
}
// 模块
@NgModule({
providers: [MyService] // 忘记添加MyService到providers数组中
})
export class MyModule {
// ...
}
// 依赖项的服务类
@Injectable()
export class ServiceA {
constructor(@Optional() private serviceB: ServiceB) {
// ...
}
}
@Injectable()
export class ServiceB {
constructor(private serviceA: ServiceA) { // ServiceA与ServiceB存在循环依赖
// ...
}
}
// 依赖项的服务类
@Injectable()
export class MyService {
// ...
}
// 模块
@NgModule({
providers: [MyService, MyService] // 多次声明了MyService
})
export class MyModule {
// ...
}
// 依赖项的服务类
@Injectable()
export class MyService {
// ...
}
// 注入令牌
export const MY_SERVICE_TOKEN = new InjectionToken('MyService');
// 模块
@NgModule({
providers: [
{ provide: MY_SERVICE_TOKEN, useClass: MyService }
]
})
export class MyModule {
constructor(@Inject(MY_SERVICE_TOKEN) private myService: MyService) {
// ...
}
}
这些是一些常见的Angular 9 DI问题及其解决方法,希望对你有所帮助。