我有一个我想拥有的静态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;
}
}
如果我听到您的声音正确,您正在问如何在另一个服务中注入服务?如果是这样,只要您使用该服务的组件,就可以进行构造函数注入。
换句话说:如果您有一个ComponentA
,它注入了一个称为serviceB
的服务(使用providers
),则ComponentA
的所有孩子都可以使用serviceB
实例使用构造函数注入,如您在代码中评论(constructor( private profileService: ProfileService ) {}
)。
我建议阅读有关依赖注入的角度结构部分。
我希望它会有所帮助,这就是我的事实。