Rxjs 无法从侦听器订阅数据
在我的Rxjs 无法从侦听器订阅数据,rxjs,angular6,interceptor,angular-httpclient,rxjs6,Rxjs,Angular6,Interceptor,Angular Httpclient,Rxjs6,在我的AppComponent.ts文件中,我使用HttpClient进行了一个HTTP GET调用 import { Component } from '@angular/core'; import { Observable, Subscriber, Unsubscribable } from 'rxjs'; import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-root', te
AppComponent.ts
文件中,我使用HttpClient
进行了一个HTTP GET调用
import { Component } from '@angular/core';
import { Observable, Subscriber, Unsubscribable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app';
ob: Observable<any> = null;
constructor(private httpClient: HttpClient) {
httpClient.get("").subscribe((response) => {
console.log(response);
});
}
}
从'@angular/core'导入{Component};
从“rxjs”导入{可观察,订阅,不可订阅};
从'@angular/common/http'导入{HttpClient};
@组成部分({
选择器:'应用程序根',
templateUrl:“./app.component.html”,
样式URL:['./app.component.css']
})
导出类AppComponent{
标题=‘应用程序’;
ob:可观察=零;
构造函数(私有httpClient:httpClient){
httpClient.get(“”).subscribe((响应)=>{
控制台日志(响应);
});
}
}
然后我还有一个拦截器,它截取Http调用并返回一些静态数据(比如说缓存)
从“@angular/core”导入{Injectable};
从'@angular/common/http'导入{HttpEvent,HttpInterceptor,HttpHandler,HttpRequest};
从“rxjs”导入{可观察的};
@可注射()
导出类CustomHttpInterceptor实现HttpInterceptor{
截取(req:HttpRequest,next:HttpHandler):可观察{
归还({});
}
}
但是,AppComponent.ts
文件中的订阅未收到任何响应。事实上,subscribe success or error函数甚至没有被命中。
也没有控制台错误。有人知道这是怎么回事吗
注意
我已将返回类型从
Observable
更改为Observable
,因为TypeScript无法将Observable
转换为Observable
,缓存的响应需要是类型,但更准确地说,它需要是类型,其中包括类HttpResponse
:
const response=新的HttpResponse({
正文:{},
现状:200
})
回复(回复);
不过,这有点未经测试,不确定body是否需要是可解析的json字符串才能正常工作:
body:“{}”
,但这需要您尝试。:) 太棒了。这件事把我逼到了最高层。我希望我能有机会给你买杯咖啡或啤酒:)@Sandy为什么不两样都买呢不管怎么说,我想你不必为身体制作一个可解析的json字符串,对吧?哈哈…是的…都在我身上。是的,主体可以是对象,它不需要是字符串。
import { Injectable } from "@angular/core";
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable, of } from "rxjs";
@Injectable()
export class CustomHttpInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {
return of({});
}
}
const response = new HttpResponse<object>({
body: {},
status: 200
})
return of(response);