I have a Authenticate Class with I would like to return a true or false but with Observable it is async so I am a lost on how to wait for the httpclient to finish.
At the moment the call to isLogin will always return false.
import { Injectable } from '@angular/core';
import { HttpClient , HttpHeaderResponse, HttpHeaders, } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Subscription } from 'rxjs/Subscription';
class LoginData {
UserKey: string;
Password: string;
}
class TokenData {
token: string;
datetime: string;
}
@Injectable()
export class Authenticate {
private Url = 'http://192.168.1.1:6000';
constructor(private http: HttpClient) {}
public isLogin(userkey: string, password: string ): boolean {
const logindata = new LoginData();
logindata.UserKey = userkey;
logindata.Password = password;
const retval = false;
this.http.post<TokenData>(`${this.Url}/login`, logindata, {headers: this.getHeader()});
.subscribe(sub => {
if(sub.token)
{
localStorage.setItem('token',sub.token);
retval = true;
}
} );
return retval;
}
}