下面是 angular 中 components.ts 之一的代碼,我遇到了錯誤編譯問題:X
錯誤
merge/merge.component.ts:75:12 - 錯誤 TS2551:“Observable”型別上不存在“取消訂閱”屬性。您指的是 'subscribe' 嗎?
75 out$().unsubscribe() ~~~~~~~~~~~~
../../node_modules/rxjs/dist/types/internal/Observable.d.ts:53:5 53 subscribe(observer?: Partial<Observer>):訂閱;~~~~~~~~~ '訂閱' 在這里宣告。
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()
}
}
uj5u.com熱心網友回復:
subscribe() 方法回傳一個 Subsciption,您必須取消訂閱。為了讓它更有用,你應該在 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();
}
uj5u.com熱心網友回復:
可觀察物件沒有取消訂閱方法。當你訂閱一個 observable 時,它??會給你一個訂閱。然后您可以取消訂閱。
const mySubscription = out$().subscribe(
data => console.log(data)
);
mySubscription.unsubscribe();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/385196.html
上一篇:對SpringGateway的Angular請求請求的資源上不存在“Access-Control-Allow-Origin”標頭
