Этот вопрос очень часто встречается, некоторые предпочитают использовать в сервисе некоторые в компоненте:
Angular 2 подписаться на компонент или службу? : он говорит, что никогда не означает ручную подписку из компонента!
Если нам не нужны какие-либо данные, тогда зачем нам подписываться (в сервисе)? и когда будет отменена подписка?
Если мы подписываемся на компонент:
this.serviceA.getMethodObservable().subscribe(data => {
this.data = data;
});
Примечание: подписка никогда не отписывается!
Если Наблюдение не может завершиться его собственный, тогда весь компонент, шаблон и все связанные объекты будут жить в памяти вечно.
Для этого мы используем
// onDestroy: subject
this.serviceA.getMethodObservable()
.pipe(takeUntil(this.onDestroy))
.subscribe(data => {
this.data = data;
});
ngOnDestroy() {
this.onDestroy.next();
}
Это вопрос для подробного обсуждения и понимания плюсов и минусы любой подход! Итак, мой вопрос: КАКОЙ И ПОЧЕМУ?