Angular(2/4)类似于Symfony(2/3)标记服务

时间:2017-09-10 22:19:16

标签: angular angular-providers

我正在努力实现与Symfony标记服务类似的东西。

它将用于什么: 我希望将“选民”复制到我的前线逻辑中(是的,我知道前端技术不会让我100%确定真正的许可,这就是我需要这样的逻辑来“将”后端“转换”为前端的原因。) / p>

我想要获得成功: 一个 signle 服务,其中包含已配置服务的数组(通过构造函数,setter或其他)。最好的方法是使用 forChild 静态方法在任何子模块中使用此模块,因此该服务将包含来自主要和&的选民。子模块

到目前为止我做了什么: 我在我的模块中创建了一个提供程序

export const PERMISSION_VOTERS = new InjectionToken<PermissionCheckerService>('PermissionCheckerService');

@NgModule({...})
export class SecurityModule {
    /**
     * @param {Array<IPermissionVoter>} config
     * @returns {ModuleWithProviders}
     */
    static forRoot (config: {voters: Array<Type<IPermissionVoter>>} = {voters: []}): ModuleWithProviders {
        return {
            ngModule:  SecurityModule,
            providers: [
                <ClassProvider>{
                    useClass: PermissionCheckerService,
                    provide:  PERMISSION_VOTERS,
                    useValue: config,
                    multi:    true
                }
            ],
        };
    }
}

然后,我创建了PermissionCheckerServiceIsGrantedComponent

不知何故,我设法将 PermissionCheckerService 的实例添加到我的 IsGrantedComponent 中,但我无法理解,为什么选民的数组是空的,即使我确实提供如下:

    SecurityModule.forRoot({
        voters: [UserPermissionVoter]
    }),

我担心我会错误地理解某些文档(正在阅读文档并试图比较来自第三方lib的“类似”逻辑)。

0 个答案:

没有答案