2016-09-20 19 views
0

アングル2を扱うのが初めてです。私はJSON文字列を返すサービスREST APIを開発しました。どのリクエストは、次のコードで行いますどのように私はリストのような何かにプロミスを得ることができますか?

getUsuaris(): Promise<Usuari> { 
    return this.http.get(this.URLUsuaris) 
     .toPromise() 
     .then(response => response.json().data as Usuari[]) 
     .catch(this.handleError); 
} 

次のコードの詳細なしに、簡単なログインではなく、authenticatedUserListの理由がNULLであるため、その属性をobiamente。

private URLUsuaris = 'http://localhost:50541/api/Usuaris'; 

constructor(
    private _logger: Logger, 
    private _router: Router, 
    private http: Http) { } 

logIn(usuari: Usuari) { 

    var authenticatedUserList: Promise<Usuari> = this.getUsuaris(); 
    var authenticatedUser: Usuari; 

    this._logger.log(authenticatedUserList[0]); 

    for (var i in authenticatedUserList) { 
     if (authenticatedUserList[i].usuari === usuari.Usuari1) { 
      authenticatedUser = authenticatedUserList[i]; 
      break; 
     } 
    } 

    if (authenticatedUser && authenticatedUser.Password === usuari.Password){ 
     localStorage.setItem("usuari", authenticatedUser.Usuari1); 
     this._router.navigate(['Home']); 

     this._logger.log(localStorage.getItem("usuari")); 
     this._logger.log('Usuari Registart!'); 

     return true; 
    } 
    this._logger.log('Usuari No Registart!'); 
    return false; 
} 

サーバーは情報を正しく返します。 APIを送信するものである

Userクラス:

export class Usuari { 
    public Id: number; 
    public Usuari1: string; 
    public Password: string; 

    constructor(usuari: string, password: string) { } 
} 

してください、あなたは、将来的には同じ過ちを満たすことが義務付けされていない説明を失敗するかもしれないものの任意のアイデアを持っている場合。

ありがとうございます!あなたはこのような約束のリターンを使用する必要が

答えて

0

:今、それはPromise<boolean>代わりのbooleanを返すように

private URLUsuaris = 'http://localhost:50541/api/Usuaris'; 
 

 
constructor(
 
    private _logger: Logger, 
 
    private _router: Router, 
 
    private http: Http) { } 
 

 
logIn(usuari: Usuari) { 
 
\t return this.getUsuaris().then((authenticatedUserList)=>{ 
 
\t \t var authenticatedUser: Usuari; 
 

 
\t \t this._logger.log(authenticatedUserList[0]); 
 

 
\t \t for (var i in authenticatedUserList) { 
 
\t \t \t if (authenticatedUserList[i].usuari === usuari.Usuari1) { 
 
\t \t \t \t authenticatedUser = authenticatedUserList[i]; 
 
\t \t \t \t break; 
 
\t \t \t } 
 
\t \t } 
 

 
\t \t if (authenticatedUser && authenticatedUser.Password === usuari.Password){ 
 
\t \t \t localStorage.setItem("usuari", authenticatedUser.Usuari1); 
 
\t \t \t this._router.navigate(['Home']); 
 

 
\t \t \t this._logger.log(localStorage.getItem("usuari")); 
 
\t \t \t this._logger.log('Usuari Registart!'); 
 

 
\t \t \t return true; 
 
\t \t } 
 
\t \t this._logger.log('Usuari No Registart!'); 
 
\t \t return false; 
 
\t }); 
 
}

これもloginメソッドの戻り値を変更しました。

関連する問題