我正在开发一个目前是 Angular RC5 和 Material Design 最新的项目。并不是说最后一部分是相关的。
由于显而易见的原因,我开始创建单独的模块并远离主模块中的所有内容。但是,我需要有在所有模块之间共享的提供程序。F/EI 有一项服务,它最终连接到我们的后端系统。不同模块的 URL 等设置在不同的提供程序上。所有这些服务目前也是一个单独的 git 项目的一部分,因为我也在我们的 iOnic 应用程序和其他前端中使用它们。
那么我将如何去拥有这项服务,它在我为我的项目创建的所有模块中共享它的实例?
我还想创建一个仪表板,显示当前安装/可用模块中的“小部件”。这也取决于用户可以清楚地看到什么。Java 中的类似构造将通过组件扫描/反射来解决。在 Angular 中,我假设我会创建一个全球可用的提供程序,我可以在其中添加要放置的类型,然后在仪表板上可用?
模块的最后一部分可能很棘手,因为一切都是分开的,有人可以分享一些想法吗?它们基本上是 2 个问题,但我相信它们应该以一个非常相似的答案来解决。
编辑:
因此,就我而言,我想了解现有的路线,这与我所说的另一个问题有关,但与此有关。
我想做的是这样的
@NgModule({
import:[
BaseModule,
someConstContainingRoutes
],
})
export class SubModuleWithRouting implements OnInit {
//Import routeAuthService from BasicModule
constructor(private routeAuthService: RouteAuthService){};
ngOnInit() {
this.routeAuthService.addRoutes(someConstContainingRoutes);
}
}
像这样的模式让我不会在主组件或 w/e 中设置我的服务中的路由。当然,我们可以在首次加载或 w/e 时执行此操作,但感觉不对。
我想其他开发人员也必须做类似的事情,但我现在看不出哪种模式适合这里。
也许已经有这样的钩子可用。我BaseModule
不会对这个模块一无所知。我的路线可选地包含某些权限值(这只是一个枚举)。在canActivate
钩子上我想检查一下,所以我觉得它应该知道路线,因为我似乎无法在canActivate
钩子中获取它并且为每个权限设置它似乎很愚蠢。