1

我已经尝试过这个建议,但它不起作用 Observable 没有任何“fromPromise”方法,并且打字稿出现错误。

import {Observable} from "rxjs/Rx";
import {Http} from "@angular/http";
import {GLOBAL_CONST} from "../global-const";
import {Resolve, ActivatedRouteSnapshot, RouterStateSnapshot} from "@angular/router";

export class ResolverSignupBegin{//} implements Resolve<any>{

    signupBeginData:any[];

    constructor(private http:Http){}

    getData(){
        return this.http.get(GLOBAL_CONST.apiPath + "/user/login/api-logged-in")
            .map(res => res.json())
            .subscribe(
                (data) => { console.log("data", data); return data; },
                (err) => { console.log("error", err); }
            );
    }


    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<any>{
        return this.getData();
    }


}

我在“this”.getData 上有一个错误,说“错误:(28, 16) TS2322: Type 'Subscription' is notassignable to type 'Observable'. Property '_isScalar' is missing in type 'Subscription'。”

4

1 回答 1

1

如果您订阅,您会得到一个Subscriptionresolve需要返回一个Observable.

与其订阅自己,不如返回一个 observable 并让 Angular 进行订阅

getData(){
    return this.http.get(GLOBAL_CONST.apiPath + "/user/login/api-logged-in")
        .map(res => res.json())
        .catch((err) => { console.log("error", err); throw err;}
        .do(
            (data) => { console.log("data", data)},
        );
}

不要忘记您需要导入和 之类的运算mapdo。请参阅带有 TypeScript 错误的 Angular 2 HTTP GET http.get(...).map is not a function in [null]

于 2016-07-21T07:47:49.523 回答