我试图取消订阅 angular 中的一个可观察对象,但我收到错误消息,如取消订阅不存在
I tried to do unsubscribe from an observable in angular But I am getting error like unsubscribe does not exists
下面是 angular 中的 components.ts 之一的代码,我得到了下面的错误
使用 problems:X
编译
错误
merge/merge.component.ts:75:12 - 错误 TS2551:属性 'unsubscribe' 在类型 'Observable' 上不存在。您是说 'subscribe' 吗?
75 out$().unsubscribe()
~~~~~~~~~~~
../../node_modules/rxjs/dist/types/internal/Observable.d.ts:53:5
53 subscribe(observer?: Partial): 订阅;
~~~~~~~~~
'subscribe' 在这里声明。
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()
}
}
可观察对象没有取消订阅方法。当您订阅一个可观察对象时,它会为您提供订阅。然后你可以取消订阅。
const mySubscription = out$().subscribe(
data => console.log(data)
);
mySubscription.unsubscribe();
subscribe()方法returns一个订阅,你必须取消订阅。为了让它更有用,你应该在 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();
}
下面是 angular 中的 components.ts 之一的代码,我得到了下面的错误 使用 problems:X
编译错误
merge/merge.component.ts:75:12 - 错误 TS2551:属性 'unsubscribe' 在类型 'Observable' 上不存在。您是说 'subscribe' 吗?
75 out$().unsubscribe() ~~~~~~~~~~~
../../node_modules/rxjs/dist/types/internal/Observable.d.ts:53:5
53 subscribe(observer?: Partial
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()
}
}
可观察对象没有取消订阅方法。当您订阅一个可观察对象时,它会为您提供订阅。然后你可以取消订阅。
const mySubscription = out$().subscribe(
data => console.log(data)
);
mySubscription.unsubscribe();
subscribe()方法returns一个订阅,你必须取消订阅。为了让它更有用,你应该在 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();
}