You're callback does not include the console statement. It should be
something like this:
.then(user => {
// all code that is waiting for the response goes here
})

On Sun, Jul 31, 2016, 13:53 <[email protected]> wrote:

> i am try to create a login app using angular 2 http with promise.
>
> issue is before printing the response object in extractData function in 
> service, "Got response" console is printing from login component.
>
> So before am getting response from my restful webservice login component
> below code are executes. This happening only first time i click sign in
> button. Second time onwards am getting response first then login component
> code are executes.
>
> Please someone help me to how to wait till response come from webservice.
>
> please find my code below.
>
> Login component
>
> import {Component} from '@angular/core';
> import { Router} from '@angular/router';
>
> import {User} from '../model/user';
> import {UserService} from '../service/user-service';
>
> @Component({
>     selector : 'login-form',
>     templateUrl : 'app/template/login.html',
>     providers : [
>         UserService
>     ]
> })
>
> export class LoginComponent{
>
>     user: User;
>
>     constructor(private userService: UserService,private router: Router){}
>
>     loginUser(form: any): void {
>         this.userService.loginUser(form.username,form.password).then(user => 
> this.user = user)
>         console.log("Got response");
>         //console.log(this.user);
>         try {
>             console.log(this.user.userID);
>             console.log(this.user.name);
>             console.log(this.user.mobile);
>             console.log(this.user.email);
>             this.router.navigate(['/']);
>         }
>         catch(err) {
>         }
>   }
> }
>
> And my service
>
> import { Injectable }    from '@angular/core';
> import { Headers, Http, Response, RequestOptions } from '@angular/http';
>
> import '../rxjs-operators';
>
> import {User} from '../model/user';
>
> @Injectable()
> export class UserService{
>
>     private userUrl = 'http://localhost:8080/khalibottle/user/';
>     private headers = new Headers({ 'Content-Type': 'application/json' });
>
>     constructor(private http:Http){}
>
>     getUsers (): Promise<User[]> {
>     return this.http.get(this.userUrl + "list")
>                   .toPromise()
>                   .then(this.extractData)
>                   .catch(this.handleError);
>     }
>
>     loginUser (userName,password): Promise<User> {
>        let body = JSON.stringify({ userName, password });
>        let options = new RequestOptions({ headers: this.headers });
>        return this.http.post(this.userUrl + "login",body,options)
>                   .toPromise()
>                   .then(this.extractData)
>                   .catch(this.handleError);
>    }
>
>    registerUser (name,mobile,email,password,roleID): Promise<string> {
>     let body = JSON.stringify({ name, mobile, email, password, roleID });
>     let options = new RequestOptions({ headers: this.headers });
>     return this.http.post(this.userUrl + "register",body,options)
>                   .toPromise()
>                   .then(this.extractData)
>                   .catch(this.handleError);
>   }
>
>     private extractData(res: Response) {
>         let body = res.json();
>       console.log(body);
>         return body || { };
>     }
>
>     private handleError(error: any) {
>         console.error('An error occurred', error);
>         return Promise.reject(error.message || error);
>     }
> }
>
> --
> You received this message because you are subscribed to the Google Groups
> "AngularJS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to