Проблема локального хранилища - угловая 2

У меня есть локальная переменная хранения для хранения данных текущих аутентифицированных игр. Это структура моего приложения.

Открытые игры

У меня есть таблица Open Games, в которой хранится список игр. Теперь, когда я нажимаю на любую из игр (властелин колец) в таблице, она аутентифицируется, а имя аутентифицированной игры сохраняется в локальной переменной Storage и направляется на страницу (например, Display Game Page), которая отображает текущее сохраненное имя в локальном хранилище.

В первом случае я понимаю, что аутентифицированная игра отображается на странице отображения игры, но происходит то, что, когда я возвращаюсь к таблице Open Games для аутентификации другой игры (Spiderman), локальное хранилище по-прежнему сохраняет первую игру, в которой я аутентифицировался. Я должен буду повторно подтвердить подлинность Человека-паука прежде, чем местное хранилище сохранит Человека-паука.

При проверке консоли в журнале, когда я аутентифицирую игру, в локальном хранилище на странице отображения игры отображается старое сохраненное значение до отображения сведений о новой аутентифицированной игре.

Теперь моя проблема: как я могу убедиться, что аутентификация происходит до того, как локальное хранилище сохранит аутентифицированную игру?

Auth

constructor(private httpService: Http) {
    let currentGame = JSON.parse(localStorage.getItem('currentGame'));    
}

authGame(game: string): Observable<boolean> {
    return this.http.post('http://localhost:9000/example.com',({game: game }))
           .map((response: Response) => {

        let game_name:string = response && response.json().game.name;

        if (game_name ) {
            // store name in variable 
            this.game_name = game_name;

            localStorage.setItem('currentGame', JSON.stringify({game_name:game_name })

            console('Current Game is ' +game_name)
            return true;
        } else {
            return false;
        }

    });      

}

Показать страницу игры

constructor( private auth:AuthGame){
     this.currentGame = JSON.parse(localStorage.getItem('currentGame'));    
     this.currentGame.game_name);
     console('Current Game is ' currentGame.game_name)
}

обновлен Auth

constructor(private httpService: Http) {

    let currentGame = JSON.parse(localStorage.getItem('currentGame'));
}

authGame(game: string): Observable<boolean> {
    return this.http.post('http://localhost:9000/example.com',({game: game }))
            .map((response: Response) => {         
        let game_name:string = response && response.json().game.name;

        if (game_name ) {
            // store name in variable 
            this.game_name = game_name;
            if(localStorage.getItem('currentGame')) {
                localstorage.removeItem('currentGame');
                localStorage.setItem('currentGame', JSON.stringify({game_name:game_name }))   
                console('Current Game is ' +game_name)
            }
            return true;

        } else {
            return false;
        }

    });

}

1 ответ

if(localStorage.getItem('currentGame'))
{
localStorage.removeItem('currentGame');
      localStorage.setItem('currentGame', JSON.stringify({game_name:game_name }))                    

}
Другие вопросы по тегам