是否有办法取消订阅角度服务的超文本传输协议调用。
附言:我知道rxjs“采取”运算符或从组件本身取消订阅服务。
import { HttpClient } from "@angular/common/http";
import { Injectable, OnDestroy } from "@angular/core";
@Injectable()
export class SampleService implements OnDestroy {
constructor(private httpClient: HttpClient) {}
getSampleData() {
return this.httpClient.get("https://jsonplaceholder.typicode.com/todos/1");
}
ngOnDestroy(): void {
// automatically unsubscribe to service.
}
}
服务没有UI驱动的生命周期,因此无论您如何实现onDestroy
,除非您自己手动调用它,否则它永远不会被调用。
这就是为什么我们有工具,阅读API,例如:
<div> {{ yourObservable$ | async | json }} </div>
@Component({...})
export class Component implements OnInit {
yourObservable$: Observable<any>
constructor(public yourService: TheService) {
this.yourObservable$ = this.yourService.getSampleData()
}
}
异步管道会注意到生命周期的变化,并在组件被删除时自动订阅和取消订阅
. add
添加其他sybscription),并在组件的onDestroy
调用订阅.取消订阅()
订阅.取消订阅是异步管道的构建基础,您也可以自己使用它