我正在尝试更改服务中的Observable值以在其他页面上获取它。检查用户角色的值以及页面是否安全,应将用户重定向到主页。
this.myservice.castrole.subscribe(value => {
if (value === 'User') {
this.rout.params.subscribe(params => {
this.exid = params['examid'];
});
} else {
this.myservice.checkUser('NoUser');
this.router.navigate(['']);
}
});
我也尝试将这段代码放在ngOnChanges中,但是仍然会出现相同的错误。它会暂停浏览器几秒钟。服务中的代码是
private role = new BehaviorSubject<string>('NoUser');
castrole = this.role.asObservable();
和
checkUser(data) {
this.role.next(data);
}
请帮助。
答案 0 :(得分:0)
我确定您的值Castrole无法正确访问或为空。
为了清楚起见,我通常要做的是(在服务中)以下内容:
private roleSubject: BehaviorSubject<string> = new BehaviorSubject<string>('NoUser');
getRoleSubject() {
return this.roleSubject;
}
getRoleSubjectAsObservable() {
return this.roleSubject.asObservable();
}
在您需要的任何地方:
主题:
this.service.getRoleSubject().next(value);
可观察
this.service.getRoleSubjectAsObservable().subscribe(value => { ... });