gpt4 book ai didi

angular - 从 Angular 2 中的静态方法引用私有(private)变量

转载 作者:行者123 更新时间:2023-12-04 03:13:53 24 4
gpt4 key购买 nike

我有一个类,我希望它有一个静态 get 方法,该方法引用从服务设置的私有(private)变量。到目前为止,这是我所拥有的,但我陷入了循环逻辑。

@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;
}
}

最佳答案

如果我没听错,您是在问如何在另一个服务中注入(inject)一个服务?如果是这样,您可以进行构造函数注入(inject),只要您从中使用该服务的组件已将其注入(inject)即可。

换句话说:如果您有一个 ComponentA,它注入(inject)了一个名为 serviceB 的服务(使用 providers),那么 的所有子项>ComponentA 可以使用构造函数注入(inject)获取 serviceB 实例,正如您在代码中注释的那样 (constructor( private profileService: ProfileService ) {})。

我会推荐阅读 Angular architecture关于依赖注入(inject)的部分。

我希望这对您有所帮助,而且这正是您所要求的。

关于angular - 从 Angular 2 中的静态方法引用私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42771694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com