angular - 如何在 Angular2 中注销时获取新实例/重新加载所有服务

标签 angular angular2-services

我正在开发 Angular2 应用程序,该应用程序类似于最后提供的 Plunkr 链接。

在 HeroService 中,我有一个属性 clickCount,该属性将在单击英雄时增加。但是登录后我想重置这个参数。我不想使用该服务并重置其值(实际上在我的应用程序中我使用了许多服务,因此无法使用每个服务并在注销时重置其值)。

是否有任何方法可以在特定操作上重置/重新加载服务,而无需重新加载整个应用程序。 英雄服务如下

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 应用程序之外,没有其他方法。

我只会使用一个全局共享的服务,并且所有其他服务都订阅了可观察的服务。 共享服务发出一个事件来通知其他服务应该重置,然后这些服务自己执行此操作。

关于angular - 如何在 Angular2 中注销时获取新实例/重新加载所有服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41038709/

相关文章:

Angular - fixture.debugElement.query(By.directive(IsRouteDirective) 找不到宿主元素

仅在应用程序初始化时使用 Angular 2 调用服务

angular - rxjs5/Angular - 清除 ReplaySubject 缓冲区

angular - 如何在 Angular2,agm-marker 中为自定义标记图标添加边框?

html - 如何在工具栏上同时添加图像和文本而不溢出

Angular2 - 不同级别组件之间的持久服务

Angular 2在服务中获取routeParams

Angular 2 HTTP 请求 : TypeError: backend. createConnection 不是函数

javascript - 如何创建具有 'infinite' 滚动空间的网站?

javascript - 从 Angular 组件中的服务捕获 promise 中的错误