我有一个类
export class MyClass {
constructor(data: any) {
this.data = data;
}
}
我也想像这样注入 ChangeDetectorRef。constructor(data: any, cd: ChangeDetectorRef )
但是在这种情况下,我无法像这样从MyClass创建对象const myClass = new MyClass(data)
是否可以在构造函数外部注入 ChangeDetectorRef?
您还可以拥有一个 setter 方法,一旦获得正确的引用,就需要调用该方法。
export class MyClass
{
private cd: ChangeDetectorRef;
constructor(data: any ) {
this.data = data;
}
setChangeDetector(cd: ChangeDetectorRef )
{
this.cd = cd;
}
}
其他选项
这不是依赖注入,但您也可以在初始化主模块时为ChangeDetectorRef
分配全局引用
模块.ts
import {ChangeDetectorRef} from '@angular/core';
export let CDInstance: ChangeDetectorRef;
export class AppModule
{
constructor(private cd: ChangeDetectorRef)
{
CDInstance = this.cd;
}
}
我的类
import {InjectorInstance} from './app.module';
export class MyClass
{
private cd: ChangeDetectorRef;
constructor(data: any)
{
this.data = data;
this.cd = CDInstance;
}
}
你可以通过一个二传手:
export class MyClass {
cdRef: ChangeDetectorRef;
constructor(data: any) {
this.data = data;
}
setCdRef(value: ChangeDetectorRef) { this.cdRef = value; }
}
只需将ChangeDetectorRef
作为构造函数的可选参数
export class MyClass {
constructor(data: any, cd?: ChangeDetectorRef ) {
this.data = data;
}
}
并像const myClass = new MyClass(data)
一样称呼它
编辑:
如果你想在服务中使用 ChangeDetectorRef,那么把它作为组件的参数传递
export class MyComponent{
constructor(cd : ChangeDetectorRef ){
const myClass = new MyClass(data, cd);
}
}