Angular2尝试全局使用localStorage但不起作用?

时间:2017-06-09 12:59:39

标签: angular service local-storage

您好我在Angular2中使用localStorage。

要检查用户是否已登录,我尝试调用此

        this.currentUser = JSON.parse(localStorage.getItem('currentUser'));

在每个组件中,但因为这应该在每个组件中调用,

我决定让它全球化,所以我创建了服务

import { Injectable } from '@angular/core';

import { User } from '../../model/auth_user';

import { HttpClient } from '../HttpClient';


@Injectable()
export class LoginCheckService {

constructor(private http: HttpClient) { }

LoginCheck(currentUser: User) {
    currentUser = JSON.parse(localStorage.getItem('currentUser')); //to check if the user is logged in
    if (currentUser == null) {
        console.log('hello!') //just to check if the currentUser is null the 'get' method gets called, however, hello! is printed but i can't seem to track any request done. 
        this.http.get('/front/member/session');
        }
    }
}

像这样,在主要组件中,我做到了这一点。

  currentUser: User;

  constructor(private auth: AuthenticationService,
    private router: Router,
    private loginCheck: LoginCheckService) {
    this.loginCheck.LoginCheck(this.currentUser);
  }

然而,即使我登录时,来自主要组件的currentUser似乎仍然是空的,这在以前我没有使用服务时没有发生过。

我还添加了if语句,所以如果currentUser为null,我必须发送'get'http请求,但这也不是请求。

我做错了什么?

谢谢。

(我向服务提供商添加了服务)

2 个答案:

答案 0 :(得分:1)

因为你缺少很多代码。

在您的服务中,您使用currentUser创建了一个功能。然后,立即将其值更改为localStorage值(currentUser = JSON.parse(...))。

这就是你所做的一切。您应该添加更多代码,以便它可以执行更多操作。

例如:

<强>组件

constructor(/* imports */) {
    this.currentUser = this.loginCheck.LoginCheck();
}

<强>服务

LoginCheck(): any {
    return JSON.parse(/* your localStorage value */);
}

答案 1 :(得分:1)

我在代码中没有看到您在localStorage currentUser 参数中设置任何内容的位置。

您的HttpClient.get是否返回Observable?如果是这样,您需要订阅才能发起http请求。

this.http.get('/front/member/session').subscribe(result => {
    // do something with result
    // save it to localstorage, i guess
});