1

私はすでにこの提案を試しましたが、Observable には「fromPromise」メソッドがなく、typescript でエラーが発生します。

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: タイプ 'Subscription' はタイプ 'Observable' に割り当てられません。タイプ 'Subscription' にプロパティ '_isScalar' がありません。」というエラーがあります。

4

1 に答える 1

1

購読すると を取得しますが、Subscriptionresolve返す必要があります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)},
        );
}

mapや などの演算子をインポートする必要があることを忘れないでくださいdoAngular 2 HTTP GET with TypeScript error http.get(...).map is not a function in [null]を参照してください。

于 2016-07-21T07:47:49.523 に答える