Angular переходящий предмет в родительский класс - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь реализовать автоматическую отмену подписки в Angular в моем родительском классе на основе показанного примера . Любой (дочерний) компонент, который хочет автоматически отписаться от своих Angular подписок, расширит родительский класс, и дочерний класс передаст Subject родительскому классу, так что родительский класс.

Вот мой родительский класс :

Родительский класс:

export class ParentUnsubscribe implements OnDestroy {
    constructor(ngUnsubscribe$: Subject<boolean>) {
       console.log(this.ngUnsubscribe$);      // this is undefined
       this.ngUnsubscribe$ = ngUnsubscribe$;
    }

    ngOnDestroy() {
        if (this.ngUnsubscribe$) {
           this.ngUnsubscribe$.next(true);
           this.ngUnsubscribe$.unsubscribe();
        }
    }
}

Я хочу, чтобы любые дочерние классы, которые хотят автоматически отписаться, расширяли родительский класс, например:

Дочерний класс:

export class ChildComponent extends ParentUnsubscribe {
    ngUnsubscribe$: Subject<boolean> = new Subject<boolean>();
    constructor() {
        super(this.ngUnsubscribe$); // ts error: 'super' must be called before accessing 'this' in the constructor of a derived class.
    }
}

Как правильно расширять компоненты родительского класса в Angular, все, что я пытаюсь сделать, кажется, дает мне ошибки.

Я также понимаю, что могу просто создать ngOnDestroy в дочерних классах компонентов, однако есть причины, по которым я хочу расширить родительский класс, чтобы отписаться от подписок (ParentUnsubscribe также отменяет подписку на сокеты, поэтому я хочу, чтобы обе подписки на сокеты и подписки angular отменили подписку в одном классе ParentUnsubscribe).

Angular / Typescript плохо сочетается с тем, как я передаю Предмет в родительский класс. Как я могу добиться этого без ошибок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...