Экземпляр ChangeDetectorRef в Angular - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть один компонент и один обычный класс TypeScript в проекте Angular. Компонент расширяет класс. Оба имеют независимый экземпляр 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
}

Меня смущает то, что экземпляр ChangeDetectorRef, который используется из суперкласса, работает, даже если он не внедрен и не создается явно.

Это поведение связано с природой ChangeDetectorRef или с тем, как наследование работает в TypeScript, или с чем-то совершенно другим?

1 Ответ

1 голос
/ 28 февраля 2020

Когда angular вводит

private cdr: ChangeDetectorRef

в MyComponent, он фактически работает по тому же параметру, который есть у его отца.

Если вы создаете экземпляр MySuperClass самостоятельно или если вы меняете MySuperClass's имя параметра cdr, они оба не будут содержать один и тот же контекст ChangeDetectorRef

...