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}