【发布时间】:2018-08-03 10:38:20
【问题描述】:
我有一个带有核心包和主机包的 angular2 应用程序。核心包用于宿主包。
我正在开发一个在核心包中定义的身份验证服务。但我想服务在主机包中使用。这样我就可以对整个应用程序使用身份验证。
我想使用核心包中定义的服务。任何人都可以帮助如何实现这一目标?
UICore:
export class UICoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: UICoreModule,
providers: [
AuthGuardService,
AuthService
]
};
}
}
在npm link .\src 之后,我在主机文件夹中执行npm link UI-Core。
主持人:
import { UICoreModule } from 'ui-core';
@NgModule({
imports:[
UICoreModule
],
providers:[
//how to use the AuthService from UICoreModule
]
})
export class HostModule { }
谢谢
【问题讨论】:
-
我的理解是你不需要做任何事情——你现在可以访问导入模块的提供者,而不必将它们单独注入到你的宿主类中。当您尝试通过在类的业务逻辑中直接引用它们来访问它们时会发生什么?我相信它应该可以在您访问导入模块的提供者时起作用。
-
还有什么是核心和主机“包”?我不熟悉这些
-
有两个应用程序。 Host 是拥有所有根菜单和其他根样式的主机。核心包是特定于项目的应用程序。我构建并链接这个核心项目并创建一个包并在主机中使用它。宿主应用程序是我所做的 npm build:prod 和部署。
-
谢谢。你为什么要使用forRoot?您的示例没有声明任何组件,您可以创建一个普通模块,并像往常一样声明提供者然后导入它吗?然后,提供程序应该可以直接用于使用核心模块的模块。