如何在 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));
}
}
我认为除了销毁并重新引导整个 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));
}
}
我认为除了销毁并重新引导整个 Angular2 应用程序之外没有其他方法。
我只想使用一个全局共享服务,所有其他服务都可以订阅。 共享服务发出一个事件来通知其他人他们应该重置,然后这些服务自己完成。