Isso é verdade. Aparentemente a galera começa a desenvolver sem entender um pouco a parte mais teórica da tecnologia e aí não sabe que isso pode causar grandes problemas. Eu já peguei um projeto onde estava tendo vários estouros de memória, e o problema era justamente esse de esquecer de matar os observables. Era até engraçado, porque a maioria das chamadas poderia ter sido feita apenas com o Pipe Async e resolveria o problema.
Mas enfim, excelente artigo. Eu estou escrevendo um sobre dicas básicas de performance no Angular, e provavelmente citarei aqui o seu lá =)
Se o observable for usado para pegar a informação uma única vez, dá pra usar também o operador
takedo rxjs com1de parâmetro.Só é importante saber que ele vai ser destruído(subscrito) apenas quando emitir o valor, pra poder organizar os cenários de uso.
Só deixando um exemplo:
this.subPeople = this.http .get<People>('swapi.co/api/people/1') .pipe(take(1)) .subscribe((data: People) => { this.people = data; });