【问题标题】:set value to session and get value from session using angular2使用 angular2 将值设置为会话并从会话中获取值
【发布时间】:2017-11-24 19:22:19
【问题描述】:

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

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');
    }

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

【问题讨论】:

  • 它是因为你试图在设置值之前获取值var session = sessionStorage.getItem('session'); 行将立即执行而不等待this._homeService.get 的结果
  • @jitender 我在获取之前设置了会话。 .do(data =&gt; sessionStorage.setItem('session',JSON.stringify(data))) 。如果我错了,请纠正我。
  • sessionStorage.getItem 将在您上面提到的行之前执行 javascript 不会等待您的 get 方法完成

标签: angular typescript


【解决方案1】:

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);

【讨论】:

  • 很棒的兄弟@Alex。工作
猜你喜欢
  • 1970-01-01
  • 2014-07-13
  • 2015-01-11
  • 2013-08-21
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 2020-05-17
  • 2015-01-23
相关资源
最近更新 更多