将值设置为session并使用angular2

时间:2017-11-24 10:57:03

标签: angular typescript

我无法获得并设置为会话以下是我的代码:

login_btnClick() {

        var NTLoginID = ((document.getElementById("NTLoginID") as HTMLInputElement).value);
        this._homeService.get(Global.BASE_USER_ENDPOINT + '/EmployeeDetailsApi?user_id=' + NTLoginID)
            .do(data => sessionStorage.setItem('session',JSON.stringify(data)))
            .subscribe(homes => { this.homes = homes; this.indLoading = false; },
            error => this.msg = <any>error);
        var session = sessionStorage.getItem('session');
        alert(JSON.stringify(session));
        this.router.navigateByUrl('/user');
    }

我只得到null,而不是确切的值。我从.do(data => alert(JSON.stringify(data)))获得了价值。我是angular2的新手。请帮忙。

1 个答案:

答案 0 :(得分:0)

Angular 2中的Http请求(或几乎任何地方)都是异步的。这意味着一旦你的代码到达.do(),它就不会等待响应,而是继续运行你的程序。像这样更改代码可以解决您的问题:

    this._homeService.get(Global.BASE_USER_ENDPOINT + '/EmployeeDetailsApi?user_id=' + NTLoginID)
        .do(data => sessionStorage.setItem('session',JSON.stringify(data)))
        .subscribe(homes => { 
              this.homes = homes;
              this.indLoading = false; 
              var session = sessionStorage.getItem('session');
              alert(JSON.stringify(session));
              this.router.navigateByUrl('/user');
        },
        error => this.msg = <any>error);