从角度2中的静态方法引用私有变量

时间:2017-03-13 19:15:57

标签: angular

我有一个类,我希望有一个静态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;
    }
}

1 个答案:

答案 0 :(得分:2)

如果我听你说得对,你问的是如何在另一项服务中注入服务? 如果是这样,只要从中使用该服务的组件注入,就可以进行构造函数注入。

换句话说:如果您有ComponentA注入名为serviceB的服务(使用providers),那么ComponentA的所有孩子都可以获得{{1}在您的代码(serviceB)中注释时使用构造函数注入的实例。

我建议阅读有关依赖注入的this部分。

我希望它有所帮助,而且事实上你要求的是它。