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



我有一个我想拥有的静态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 ) {})。

我建议阅读有关依赖注入的角度结构部分。

我希望它会有所帮助,这就是我的事实。

最新更新