Unsubscribe des observables

Il faut penser à unsubscribe les observables.

 1import { interval } from 'rxjs';
 2
 3const data$ = interval(1000);
 4
 5
 6const subscription = data$.subscribe({
 7    next: value => console.log(value),
 8    error: error => console.error(error),
 9    complete: () => console.log('DONE!')
10});
11
12// dans le ngOnDestroy()
13subscription.unsubscribe();

Une façon simple de le gérer, c'est d'utiliser takeUntil

 1import { Component, OnInit, OnDestroy } from '@angular/core';
 2
 3import { Subject, interval } from 'rxjs';
 4import { takeUntil } from 'rxjs/operators';
 5
 6@Component({ ... })
 7export class AppComponent implements OnInit, OnDestroy {
 8  isOver$: Subject<boolean> = new Subject<boolean>();
 9
10  constructor(private apollo: Apollo) {}
11
12  ngOnInit() {
13    this.myService.getAll()
14           .pipe(takeUntil(this.isOver$))
15           .subscribe(data => {
16              console.info(data);
17           },(e)=>{
18              console.error("Error", e);
19           });    
20  }
21
22  ngOnDestroy() {
23    this.isOver$.next(true);
24    this.isOver$.unsubscribe();
25  }
26}