по дефолту прописать там логику для takeUntill, чтобы отписываться, но чет засомневался, что в случае рутового сервиса в этом есть смысл)
Да, смысл есть всегда Сервис могут перепровайдить в компоненте, или приложение могут запускать с hmr, и тогда это потребуется
А как относишься к тому, чтобы сделать base компонент с каким-нибудь destroy$ сабджектом (чтобы скормить его в takeUntill) и затем наследовать от него остальные компоненты?
Наследование реализации — это плохо Реализация должна реализовывать абстракцию, а не наследовать себе ее логику
Вот же есть решение: https://taiga-ui.dev/services/destroy-service
https://github.com/ngneat/until-destroy Тоже сюда
два разных подхода же, и подход с декоратором костыльнее
А что такого, это ж наследование и это возможно а значит допустимо )
Плохо в каком плане? Я как раз сейчас задаюсь вопросом, какой подход удобнее, использовать DestroyService и в каждой подписке указывать takeUntil или создать примерно такой класс @Injectable() export class Expample implements OnDestroy { protected subscriptions:{[key:string]:Subscription} = {}; ngOnDestroy():void { Object.values(this.subscriptions).forEach(sub=>sub?.unsubscribe()); } } И наследовать его. Пока склоняюсь ко второму варианту, т.к. у меня этот класс будут наследовать компоненты, которые я в дальнейшем также буду наследовать
выходит каждый сервис будет реализацией реализации а не интерфейса, это стремно выглядит в итоге
тем более делать push в массив подписок, равноценно takeUntil, не вижу преимуществ никаких
реализацией реализации что-то сложно))
к примеру AbstractControl у него есть логика
Норм вариант, класс лучше
Вот я и хочу выяснить, что значит стремно. В проекте я наследую компоненты с целью переиспользования логики, поэтому мне удобнее решить проблему отписок через наследование
FormControl и другие контролы реализуют AbstractControl Компонент, который наследует класс, в котором просто есть ngOnDestroy с отпиской, не реализует этот класс
У меня была сторя на проекте убрать наследование классов у которых просто NgOnDestroy
И какая была причина?
Ипользовать везде этот пакет https://github.com/ngneat/until-destroy
Да и наследование такое, так себе
так там тоже самое просто в другом месте
Потому что наследование говорит нам о том, что мы реализуем конкретный контракт
лучше не над, реально, у нас в проекте это есть и я это выпиливаю
Обсуждают сегодня