我有一个Api.ts类,它处理所有api调用并返回其他组件可以订阅的Observable。
import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/throw';
import {Observable} from 'rxjs';
import config = require('./config');
@Injectable()
export class Api {
private apiUrl: string = 'someUrl';
constructor(private http: Http){
this.apiUrl = config.apiUrl;
}
getSomething(url) {
console.log(this.apiUrl+url);
return this.http.get(this.apiUrl+url)
.map(res => res.json())
.catch(this.handleError);
}
handleError(error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg);
return Observable.throw(errMsg);
}
}
然后另一个组件有api.ts作为提供者,并想要调用它的方法getSomething。
import {Component, OnInit} from '@angular/core';
import {Api} from 'shared/api';
@Component({
providers: [Api],
})
export class SomePage implements OnInit {
constructor(private api: Api) {}
ngOnInit() {
this.api.getSoemthing().subscribe((res) => {
console.log(res);
});
}
}
当我访问SomePage但我得到了
JS:200 - JS:未处理的承诺拒绝:200 - ;区域:角; 任务:Promise.then;价值:200 - JS:错误:未捕获(承诺): 200 - JS:200
我已经检查了similar question here,但它的解决方案对我没有帮助,因为我已经在我的应用程序的bootstrap中使用了NS_HTTP_PROVIDERS。
我确信这是非常微不足道的,但我无法让代码发挥作用。