我上课
export class MyClass {
constructor(data: any) {
this.data = data;
}
}
我也想这样注入ChangeDetectorRef。 constructor(data: any, cd: ChangeDetectorRef )
但是在这种情况下,我无法像这样const myClass = new MyClass(data)
从MyClass创建对象
可以在构造函数外部注入ChangeDetectorRef吗?
答案 0 :(得分:0)
只需将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);
}
}
答案 1 :(得分:0)
您可以查看设置器:
export class MyClass {
cdRef: ChangeDetectorRef;
constructor(data: any) {
this.data = data;
}
setCdRef(value: ChangeDetectorRef) { this.cdRef = value; }
}
答案 2 :(得分:0)
您还可以拥有一个setter方法,一旦获得正确的引用,就需要调用该方法。
export class MyClass
{
private cd: ChangeDetectorRef;
constructor(data: any ) {
this.data = data;
}
setChangeDetector(cd: ChangeDetectorRef )
{
this.cd = cd;
}
}
其他选项
这不是不是依赖项注入,但是您还可以在初始化主模块时为ChangeDetectorRef
分配全局引用
module.ts
import {ChangeDetectorRef} from '@angular/core';
export let CDInstance: ChangeDetectorRef;
export class AppModule
{
constructor(private cd: ChangeDetectorRef)
{
CDInstance = this.cd;
}
}
myclass.ts
import {InjectorInstance} from './app.module';
export class MyClass
{
private cd: ChangeDetectorRef;
constructor(data: any)
{
this.data = data;
this.cd = CDInstance;
}
}