如何在 Angular2 注销时获取新的 instance/reload 所有服务

How to get new instance/reload all services on logout in Angular2

我正在开发类似于最后提供的 Plunkr link 的 angular2 应用程序。

在 HeroService 中我有一个 属性 clickCount,它会在英雄点击时增加。但是登录后我想重置这个参数。我不想使用该服务并重置它的值(实际上在我的应用程序中我使用了很多服务,所以不能使用每个服务并在注销时重置它的值)。

是否有任何方法可以 reset/reload 在不重新加载整个应用程序的情况下为特定操作提供服务。 英雄服务如下

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

我认为除了销毁并重新引导整个 Angular2 应用程序之外没有其他方法。

我只想使用一个全局共享服务,所有其他服务都可以订阅。 共享服务发出一个事件来通知其他人他们应该重置,然后这些服务自己完成。