Наблюдайте за изменениями в локальном хранилище в Angular 2

У меня есть меню, которое появляется на основе входа в систему. Я использую веб-токены json в локальном хранилище для своей аутентификации, я хочу следить за изменениями в localStorage, а затем повторно обновлять свое представление о новой информации.

Как я могу отслеживать изменения в локальном хранилище?

Я установил свой localStorage с этим

localStorage.setItem('jwt', my_token); То, что я хотел бы сделать, это проверить, есть ли у меня токен, если ничего не происходит, но когда происходит изменение, запускается событие. Из того, что я знаю, мне нужно создать сервис, внедрить его туда, куда я хочу, и подписаться на наблюдаемое.

То, что у меня есть, это сервис, я не знаю, как следить за изменениями.

моя служба:

import { Injectable } from 'angular2/core';

@Injectable()
export class LocalStorageService {
    private storage: any;

    constructor() {
        this.storage = localStorage;
    }

    public retrieve(key: string): any {
        var item = this.storage.getItem(key);

        if (item && item !== 'undefined') {
            return JSON.parse(this.storage.getItem(key));
        }

        return;
    }

    public store(key: string, value: any) {
        this.storage.setItem(key, JSON.stringify(value));
    }

}

person Diego Unanue    schedule 06.04.2016    source источник
comment
Просто любопытно.. Что такое localStorage? Не увидите, чтобы он был импортирован или объявлен где-либо в вашем фрагменте.   -  person Chrillewoodz    schedule 06.04.2016
comment
Вам нужно работать на более высоком уровне абстракции. Где бы вы ни устанавливали токен в первый раз. Вы должны вызвать событие, используя `EventEmitter. Другие компоненты подписываются на него и реагируют соответствующим образом.   -  person Chandermani    schedule 06.04.2016
comment
Это объект javascript для работы с локальным хранилищем: w3schools.com/html/html5_webstorage.asp   -  person Diego Unanue    schedule 06.04.2016
comment
Вы имеете в виду, что хотите реализовать наблюдаемое, когда некоторые части вашего приложения вызывают метод store вашего сервиса LocalStorageService?   -  person Thierry Templier    schedule 06.04.2016
comment
Да, у меня есть логин, который сохраняет токен в локальном хранилище, когда пользователь входит в систему, я хочу показать меню.   -  person Diego Unanue    schedule 06.04.2016


Ответы (1)


Я создал сервис, который может сделать это за вас, если вы все еще не нашли подходящего ответа. h5webstorage уже обрабатывает события localStorage и sessionStorage и синхронизирует изменения. Все, что вам нужно сделать, это использовать его как обычный объект.

person SirDarquan    schedule 28.04.2016
comment
чувак, не могли бы вы помочь мне запустить ваш код, так как когда я пытался запустить, он ничего не делал. может мне нужно выполнить несколько других шагов, пожалуйста, проверьте запуск npm, тогда он показывает... [0] 0:51:40 - Компиляция завершена. Отслеживание изменений файла. - person Narottam Goyal; 06.06.2016