我确实创建了自己的可观察服务,返回播放器的当前曲目。Angular 2可观察到的错误处理
我签署这项服务在我的角度成分是这样的:
this.playerSubscription = this.player
.player(playlist)
.subscribe(
playerInfo => this.playerInfo = playerInfo,
error => this.router.navigate(['login'], { queryParams: { error: 'expired_token' }})
);
正如你所看到的,当我有一个错误,我将用户重定向到登录页面。
问题是当我在之前的错误后登录时,订阅返回给我最新的错误序列,我将再次重定向到登录页面。
在我的服务上,我正在使用BehaviorSubject并在做有效序列subject.next(message)
,并且subject.error(error)
发送错误序列。
如何在我的observable重新订购 后忘记最后一个错误?
谢谢!
更新1:
我做了一些新的测试在这里,当我创建一个新课题每次我订阅的时候,像波纹管它只:
player(playlist: IPlaylist, fromBegin: boolean): Observable<IPlayerInfo> {
this._player = new BehaviorSubject<IPlayerInfo>({ status: PlayerStatuses.LOADING });
... more code here ...
return this._player.asObservable();
}
没关系,如果它是一个Subject
或一个BehaviorSubject
。
这是一个很好的做法吗?
我会做重定向登录你的球员方法逻辑权限之前subject.error调用或使用auth后卫球员路线。 –
我认为在服务中添加路由器不是一个好主意。我认为将用户重定向到登录页面不是一项服务责任。 –