2016-12-08 6 views
1

最後に提供されるPlunkrリンクに似たAngular2アプリケーションを開発しています。ログアウト時に新しいインスタンスを取得する方法/ログアウト時にすべてのサービスを再ロードする

HeroServiceでは、私はヒーローのクリックで増分されるclickCountプロパティを持っています。しかし、ログイン後、私はこのパラメータをリセットしたい。私はサービスを使用してその値をリセットしたくない(実際には私のアプリケーションでは、私は多くのサービスを使用しているので、各サービスを使用することはできず、ログアウト時にその値をリセットする)。

アプリケーション全体をリロードせずに、特定のアクションでサービスをリセット/リロードする方法はありますか。私は全体Angular2アプリケーションを破壊し、再ブートストラップを除く方法があるとは思わない

import { Hero } from './hero'; 
import { HEROES } from './mock-heroes'; 
import { Injectable } from '@angular/core'; 

@Injectable() 
export class HeroService { 
    getHeroes(): Promise<Hero[]> { 
    return Promise.resolve(HEROES); 
    } 

    getHeroesSlowly(): Promise<Hero[]> { 
    return new Promise<Hero[]>(resolve => 
     setTimeout(resolve, 2000)) // delay 2 seconds 
     .then(() => this.getHeroes()); 
    } 

    getHero(id: number): Promise<Hero> { 
    return this.getHeroes() 
       .then(heroes => heroes.find(hero => hero.id === id)); 
    } 
} 

Plunkr Link

答えて

2

以下のように ヒーローサービスです。

私は、グローバルに共有されているサービスを、他のすべてのサービスを購読している監視可能なサービスと共に使用します。 共有サービスは、リセットする必要がある他の人に通知するためにイベントを発行し、これらのサービスはそれ自体でそれを行います。

+0

こんにちは、あなたはこの回答で与えられた例を意味しますか?この回答では、comp - > service - > compインタラクションについて言及しましたが、私が欲しいのはcomp - > service - > services interactionです。 –