Я пытаюсь реализовать автоматическую отмену подписки в 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 плохо сочетается с тем, как я передаю Предмет в родительский класс. Как я могу добиться этого без ошибок?