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.
