A continuación se muestra el código de uno de components.ts en angular y obtengo el siguiente error Compilado con problemas: X
ERROR
merge/merge.component.ts:75:12 - error TS2551: la propiedad 'cancelar suscripción' no existe en el tipo 'Observable'. ¿Querías escribir 'suscribir'?
75 out$().unsubscribe() ~~~~~~~~~~~
../../node_modules/rxjs/dist/types/internal/Observable.d.ts:53:5 53 subscribe(observador?: Parcial<Observador>): Suscripción; ~~~~~~~~~ 'suscribirse' se declara aquí.
import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { defer, Observable, of, Subscription } from 'rxjs'; import { HttpClient } from '@angular/common/http'; import {filter,map,distinctUntilChanged,distinctUntilKeyChanged, mergeAll, mergeMap, concatAll, retry, repeat} from 'rxjs/operators' import {from} from 'rxjs'; @Component({ selector: 'app-merge', templateUrl: './merge.component.html', styleUrls: ['./merge.component.scss'] }) export class MergeComponent implements OnInit { public items:any[]=[]; constructor(private http: HttpClient){} ngOnInit(): void { let counter=1; const out$=()=> defer(()=>this.http.get('https://jsonplaceholder.typicode.com/todos/'+counter++)).pipe( repeat(4) ); out$().subscribe( data => console.log(data) ) out$().unsubscribe() } }Un observable no tiene un método de cancelación de suscripción. Cuando te suscribes a un observable, te da una suscripción. A continuación, puede darse de baja de una suscripción.
const mySubscription = out$().subscribe( data => console.log(data) ); mySubscription.unsubscribe();El método subscribe() devuelve una Suscripción, debe darse de baja. Para que sea más útil, debe almacenarlo y cancelar esta suscripción en ngOnDestroy:
export class MergePageComponent implements OnInit, OnDestroy { protected mySubscription: Subscription; constructor( ) ngOnInit(): void { ... this.mySubscription = out$().subscribe( data => console.log(data) ); } ngOnDestroy(): void { this.mySubscription.unsubscribe(); }