未处理的Promise拒绝带有Angular的NativeScript

时间:2016-08-26 09:51:25

标签: angular nativescript

我有一个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。

我确信这是非常微不足道的,但我无法让代码发挥作用。

0 个答案:

没有答案