在我的 Angular 应用程序中,我有两个服务,一个处理 http 层,另一个只是一个路由守卫,用于实现canActivate
与第一个服务的状态相关的方法。例如:
后端服务:
@Injectable()
export class BackendService {
private data: any;
constructor(private http: Http) {
console.log('backend service constructor hit');
this.data = 'initial';
}
getData() {
console.log(this.data);
return this.data;
}
setData(data) {
// http stuff
this.data = data;
}
}
routeguard.service:
@Injectable()
export class RouteguardService implements CanActivate {
constructor(private backendService: BackendService) { }
canActivate() {
return this.backendService.getData() !== 'initial';
}
}
我相信我在错误的位置提供了其中一项服务?目前providers
,我的app.module
. 但是我可以通过 console.log 语句判断,backend.service
当它作为路由的一部分被调用时与组件使用它时是分开的,所以数据是不同的,数据总是作为“初始”返回当在 canActivate 方法中检查时,尽管已将其设置为来自组件的其他内容。希望我清楚地解释了这一点,我对角度还是很陌生。
我是否需要在不同的位置提供其中一项服务,还是我完全做错了什么?感谢您的任何指示。