在Angular 2中的选项卡之间共享sessionStorage然后立即使用它?

时间:2017-02-15 12:21:41

标签: http angular typescript sessionstorage

我已经知道的事情:

我使用的是什么:

    Angular CLI 基础上 Angular 2 (v2.4.4) TypeScript

实际问题:

脚本(在选项卡之间共享sessionStorage)在HTTP请求之前在Angular内运行,但是当页面创建HTTP请求时,它使用会话ID(发送到服务器以识别会话)和会话ID应该来自sessionStorage,但它还没有

当我打开浏览器的调试器控制台(在新选项卡上)时,sessionStorage就在那里。因此,当我重新加载这个新标签时,一切正常。 但问题是在 HTTP请求已尝试使用后,sessionStorage已设置为

上述链接解决方案在HTTP调用之前真正运行,但事件调用在HTTP调用之后发生。我认为上述链接代码中的特殊sessionStorage_transfer

window.addEventListener("storage", sessionStorage_transfer, false);

我存储会话ID如下:

get sid(): string {
    return sessionStorage.getItem('user.sid') || '';
}
set sid(value: string) {
    sessionStorage.setItem('user.sid', value);
}

所以最终sid收到了值,但是在HTTP调用已经尝试使用它之后,尽管脚本(共享sessionStorage)在任何HTTP调用之前开始运行。

(如果没有解决方案,那么我将仅使用sid的会话cookie,但我希望有人知道这个的解决方案。也许是Promise,Observable,Subject,什么?)

感谢您的解决方案! : - )

1 个答案:

答案 0 :(得分:1)

在您的angular web-app的index.html中保留正确答案中提及的here代码。它对我有用。