Angular 5 HttpClient获取请求isn';t关闭
我使用Http GET请求从后端接收一些json 服务:Angular 5 HttpClient获取请求isn';t关闭,angular,typescript,http,http-get,subscribe,Angular,Typescript,Http,Http Get,Subscribe,我使用Http GET请求从后端接收一些json 服务: public categories: BehaviorSubject<Category[]> = new BehaviorSubject(null); constructor() { const sub = this.http.get<ResponseInterface>(environment.apiUrl + 'categories') .subscribe(respo
public categories: BehaviorSubject<Category[]> = new BehaviorSubject(null);
constructor() {
const sub = this.http.get<ResponseInterface>(environment.apiUrl + 'categories')
.subscribe(response => {
categories.next(response.data)
}, (error: any) => {
sub
}, () => {
sub.unsubscribe();
});
}
开发过程中一切正常(ng serve--aot)
如果我在生产中使用请求,它会减慢我的浏览器速度,因此我必须手动结束脚本才能再次使用浏览器。但令人惊讶的是,我一停止脚本,请求的答案就会出现在“网络”选项卡上
但最恼人的是,这个错误只出现了9/10次。有人见过类似的情况吗?我可以通过将空数组([])分配给BehaviorSubject而不是null来解决这个问题
public categories: BehaviorSubject<Category[]> = new BehaviorSubject([])
公共类别:BehaviorSubject=新的BehaviorSubject([])
是的,我用ng cli在开发版本和产品版本之间试验了一些问题,您使用的是什么角度版本?尝试改变您的操作方式。在服务中,创建一个只返回可观察内容的函数:返回this.http.get(environment.apirl+“categories”);在组件中调用服务函数并附加.subscribe。不要在服务中使用构造函数,创建function@Kalamarico我用的是Angular 5.2.0。我希望,我必须将其更改为非构造函数解决方案:(
public categories: BehaviorSubject<Category[]> = new BehaviorSubject([])