我正在开发 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));
}
}
最佳答案
我认为除了销毁并重新引导整个 Angular2 应用程序之外,没有其他方法。
我只会使用一个全局共享的服务,并且所有其他服务都订阅了可观察的服务。 共享服务发出一个事件来通知其他服务应该重置,然后这些服务自己执行此操作。
关于angular - 如何在 Angular2 中注销时获取新实例/重新加载所有服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41038709/