我有一个类,我希望有一个静态get方法,它引用一个从服务设置的私有变量。这是我到目前为止所拥有的,但我已经陷入了循环逻辑。
@Injectable()
export class UserPermissions {
private static _userPermissions: PermissionsModel;
private static get userPermissions(): PermissionsModel {
if (!UserPermissions._userPermissions) {
UserPermissions.setPermissions();
}
}
private static set UserPermissions() {
let id = SessionStorage.getItem(SS_USER_ID);
// How do I setup profileService?
// Normally, I would have a constructor that would be:
// constructor( private profileService: ProfileService ) {}
// and the class would have @Component({ providers: [ProfileService] })
profileService.getPermissions(id).subscribe(
permissions => UserPermissions._userPermissions = permissions;
);
}
public static hasPermissions(permissionCode: string): boolean {
let index = UserPermissions.userPermissions().permissions
.findIndex(permission => permission.code == permissionCode);
return index >= 0;
}
}
答案 0 :(得分:2)
如果我听你说得对,你问的是如何在另一项服务中注入服务? 如果是这样,只要从中使用该服务的组件注入,就可以进行构造函数注入。
换句话说:如果您有ComponentA
注入名为serviceB
的服务(使用providers
),那么ComponentA
的所有孩子都可以获得{{1}在您的代码(serviceB
)中注释时使用构造函数注入的实例。
我建议阅读有关依赖注入的this部分。
我希望它有所帮助,而且事实上你要求的是它。