2016-06-29 8 views
5

ブール値:AngularJS 2 ZoneAwarePromise私はこの方法でAPIからデータを呼び出すためrestClientためAngularJS 2の基本クラスを有する

export class InfoDataBoolean { 
    public data: boolean; 
    public error: string; 
} 
:InfoDataBooleanは、2つのプロパティを持つクラスがある

public getInfoDataBooleanRequest(url: string): InfoDataBoolean { 
    return this.http.get(this.urlApiPrefix + url, this.createRequestOptions()) 
     .toPromise() 
     .then(response => <InfoDataBoolean>response.json()) 
     .catch(this.handleError); 
} 

私は私のサービスメソッドを呼び出す別のクラスを持っています。 この呼び出しは、このようなInfoDataBooleanクラスではなく、InfoDataBooleanからデータを返すメソッドの内部にあります。

public isLogged(): boolean { 
    return this.getInfoDataBooleanRequest('islogged').then(x => { 
     let result: InfoDataBoolean = x; 

     if(result.error !== "1") { 
     console.log('Success is failed'); 
     return false; 
     } 

     return result.data; 
    }); 
} 

console.log(isLogged())の出力:

ZoneAwarePromise {__zone_symbol__state:ヌル、__zone_symbol__value:配列[0]}

しかし、私は私の方法isLogged()からtrue又はfalseを返したいです。

どうすればいいですか?

答えて

9

isLoggedメソッドが非同期であり、約束を返すことを忘れないでください。結果を取得するには、then方法でそれにコールバックを登録する必要があります。それが解決されるとき、あなたの場合は

console.log(isLogged()); 
isLogged().then(data => { 
    console.log(data); 
}); 

は、あなたが約束して返された結果を表示...

関連する問題