Angular 中的 ChangeDetectorRef 实例
ChangeDetectorRef instance in Angular
我在 Angular 项目中有一个组件和一个常规 TypeScript class。该组件扩展了 class。两者都有一个独立的 ChangeDetectorRef 实例。像这样:
import { ChangeDetectorRef } from '@angular/core';
export class MySuperClass {
private cdr: ChangeDetectorRef;
constructor() {}
// .. other code here
}
在另一个文件中:
import { ChangeDetectorRef } from '@angular/core';
export class MyComponent extends {
@Component({...})
constructor(private cdr: ChangeDetectorRef) {
super();
}
// .. other code here
}
让我感到困惑的是,从超级 class 中使用的 ChangeDetectorRef 实例可以工作,即使它既没有注入也没有显式实例化。
此行为是由于 ChangeDetectorRef 的性质或继承在 TypeScript 中的工作方式的性质,还是完全不同的原因?
当angular注入时
private cdr: ChangeDetectorRef
进入 MyComponent 它实际上运行在他父亲拥有的相同参数上。
如果您单独创建 MySuperClass 的实例,或者如果您更改 MySuperClass 的 cdr 参数名称,它们都不会持有相同的 ChangeDetectorRef 上下文
我在 Angular 项目中有一个组件和一个常规 TypeScript class。该组件扩展了 class。两者都有一个独立的 ChangeDetectorRef 实例。像这样:
import { ChangeDetectorRef } from '@angular/core';
export class MySuperClass {
private cdr: ChangeDetectorRef;
constructor() {}
// .. other code here
}
在另一个文件中:
import { ChangeDetectorRef } from '@angular/core';
export class MyComponent extends {
@Component({...})
constructor(private cdr: ChangeDetectorRef) {
super();
}
// .. other code here
}
让我感到困惑的是,从超级 class 中使用的 ChangeDetectorRef 实例可以工作,即使它既没有注入也没有显式实例化。
此行为是由于 ChangeDetectorRef 的性质或继承在 TypeScript 中的工作方式的性质,还是完全不同的原因?
当angular注入时
private cdr: ChangeDetectorRef
进入 MyComponent 它实际上运行在他父亲拥有的相同参数上。
如果您单独创建 MySuperClass 的实例,或者如果您更改 MySuperClass 的 cdr 参数名称,它们都不会持有相同的 ChangeDetectorRef 上下文