我正在尝试从文件加载虚拟json数据,但似乎angular2 http.get方法无法选择它。每次它提供的资源不具有404状态。我使用以下代码。
const obs: Observable<any> = this.http.get('http://localhost:4200/assets/mock-json/cashback.json')
.map((res: Response) => {
console.log('***********',res.json());
res.json(); })
.do((res) => this.loadedCB = res);
if (this.loadedCB) {
return Observable.of(this.loadedCB);
}
即使我在浏览器中手动尝试URL http://localhost:4200/assets/mock-json/cashback.json也可以。无法弄清楚为什么它不能与http.get()一起使用。
答案 0 :(得分:0)
这个问题可能会发生,因为你永远不会订阅observable以便它可以启动它的执行,因此你不会得到任何结果,因为请求没有被发送(你可以检查一下)在某些Web检查器的网络选项卡中)。
您应该尝试订阅observable,以便它可以开始执行。
示例:
export class AppComponent implements OnInit {
loadedCB: any;
constructor(public http: Http) {
}
ngOnInit() {
this.tryAndLoad();
}
tryAndLoad() {
this.load().subscribe((res: any) => {
this.loadedCB = res;
if (this.loadedCB) {
console.log(this.loadedCB);
return Observable.of(this.loadedCB);
}
});
}
load() {
return this.http.get('http://localhost:4200/assets/mock-json/cashback.json')
.map((res: Response) => {
console.log('***********', res);
return res.json();
})
}
}
正确返回一个结果,然后你就可以用这个值做任何你想做的事情,因为你要返回一个observable你可以做其他事情(这个演示不能处理)
还要将导入&rxjs / Rx&#39 ;; 添加到页面顶部,以便您不会获得 this.http.get(...) .map 错误