0

ローカルストレージを見たいけどコードを書くことができません私の場合、angular2のlocalstorageを見る方法は?

私のシナリオはユーザーがログインしているときユーザーの役割IDと権限リストを取得しています。この場合、サイドメニューは権限に応じて変更されます。ここでは、ユーザーがロールの役割IDを変更して権限を変更したときに、ローカルIDの役割IDを保存します。

私の疑問は、 、

私はこのリンクに従います。How can I watch for changes to localStorage in Angular2?

しかし、私は私のシナリオを書くことができません、私はあなたがのlocalStorageをスキップして、代わりにサービスを利用するために上に移動を示唆している参照

constructor(public http: Http,public MenuService:MenuService) { 
this.userroleId = localStorage.getItem("roleId") 
} 

getSideMenu() { 
if(this.userroleId == 1) { 
    this.MenuService.getAdminMenu().subscribe(menuItems => this.menuItems= menuItems, error => console.log(error)); 
} 

if(this.userroleId == 2){ 
    this.MenuService.getpractitionerMenu().subscribe(menuItems => this.menuItems= menuItems, error => console.log(error)); 
    console.log('ss') 
} 

答えて

0

ため

私のコードに私を助けてください。したがって、次のようなもの:

@Injectable() 
export class Service { 

    private userroleId = new Subject<string>(); 
    userRole = this.userroleId.asObservable(); 

    roleReceived(role: string) { 
    this.userroleId.next(role); 
    } 
} 

がこのサービスを使用して役割への変更やコンポーネントを扱うには、これらの変更をサブスクライブします。今の変更があるたび

service.userRole.subscribe(role => { 
    this.role = role; // store the role in a variable 
    getSideMenu(this.role) // check the role and render view accordingly! 
}) 

emit(value: string) { 
    this.service.roleReceived(value); // push the new role to service 
} 

、あなたは、役割に加入し、そのコンポーネントのコンストラクタに以下を追加する必要があります。だから、役割を設定し、これをやってみたい場所このコンポーネントは変更をサブスクライブしているので、ロールは動的に更新されます。ここでは、どのビューを表示するかを決定する関数を使用できます。

最後に、ビューの変更をシミュレートするためにdivを表示/非表示するだけの子 - 親コンテキストの上記の簡単な例を示します。もちろん、ユースケースに合わせて変更を加える必要があります。 Plunker

関連する問題