我有一个声明我的组件的功能模块,还有一个配置功能路由的静态功能。
@NgModule({
declarations: FEATURE_COMPONENTS,
entryComponents: FEATURE_COMPONENTS,
imports: [
UIRouterModule,
...
]
})
export class FeatureModule {
public static setParentState(stateName: string): ModuleWithProviders {
...
return {
ngModule: FeatureModule,
providers: [
...UIRouterModule.forChild({ states: ... }).providers
// my providers
{
provide: FEATURE_PROVIDER_TOKEN,
useValue: ...
multi: false
}
]
};
}
}
我的模块本身不足以实际使用这些功能,它还需要通过上层静态功能正确完成的路由配置。
我想阻止这种情况:
@NgModule({
...
imports: [
// invalid import - I want to prevent this one
FeatureModule
// valid import
FeatureModule.setParentState(...)
]
})
export class SomeAppModule {}
当用户尝试按照上面的代码直接导入我的功能模块时,如何抛出一些错误?正确导入是通过调用静态函数而不是直接导入...
我可以使用的一个可能的东西是额外的提供程序我正在添加我的静态函数。但是怎么样?通过模块构造函数及其注入?也许通过一些自定义装饰?
我想以某种方式这样做,但也想提供一些自定义错误消息,其中包含如何正确导入模块的信息:
@NgModule({ ... })
export class FeatureModule {
public static setParentState(stateName: string): ModuleWithProviders {
// FEATURE_PROVIDER_TOKEN defined here (see above)
...
}
constructor(
@Import(FEATURE_PROVIDER_TOKEN) tokenTest: any
} {
// this will throw an error when provider isn't defined, but won't allow me to set specific error message
}
}
有什么想法吗?
答案 0 :(得分:1)
这是我实施的,似乎满足要求:
这就是它的实施方式:
d <= 500000