我有注入到另一个组件类的自定义类:
export class FormRegister implements IFormRegister, IFormControl {
}
export class A {
constructor(public formRegister: FormRegister) {
}
}
工作正常,但是如果我将构造函数添加到类FormRegister()
中,就像:
export class FormRegister implements IFormRegister, IFormControl {
construct(private newDependence: Dep)
}
它在A类中生成错误:
Uncaught Error: Can't resolve all parameters for FormRegister: (?).
因为它没有private newDependence: Dep
作为参数。
如何将DI与构造参数一起使用?
我尝试过:
export class A {
constructor(public formRegister: new FormRegister(this.newDependence)) {
}
}
答案 0 :(得分:1)
我找到了解决方案,假设我们有自定义类要注入到任何组件中:
export class FormRegister implements IFormRegister, IFormControl {
public constructor(public titleService: Title) {
}
}
在我们必须在提供者部分的NgModule
中注册此类/服务之前:
providers: [
FormRegister
]
您会注意到我们的类/服务在构造函数中使用DI。为避免错误,只需在类FormRegister
之前添加此装饰器:
@Injectable({
providedIn: 'root',
useFactory: () => new FormRegister(Title),
})
export class FormRegister implements IFormRegister, IFormControl {
}
useFactory: () => new FormRegister(Title),
表示我们使用Title
的DI