Can';t使用ASP Core 1.1在angular 2中注入服务
我正在使用Angular 2,并试图将服务注入我的应用程序 因此,我在sharedConfig“app.module.shared.ts”中添加了Can';t使用ASP Core 1.1在angular 2中注入服务,angular,typescript,dependency-injection,asp.net-core,single-page-application,Angular,Typescript,Dependency Injection,Asp.net Core,Single Page Application,我正在使用Angular 2,并试图将服务注入我的应用程序 因此,我在sharedConfig“app.module.shared.ts”中添加了提供者:[CommService] 当我尝试运行我得到的应用程序时 异常:对节点模块的调用失败,错误:错误:未捕获(承诺中):错误:没有CommService的提供程序! 错误:CommService没有提供程序 我试图在boot-server.ts中的providers中添加服务 这就是我得到的 异常:对节点模块的调用失败,错误:错误:未捕获(承诺中
提供者:[CommService]
当我尝试运行我得到的应用程序时
异常:对节点模块的调用失败,错误:错误:未捕获(承诺中):错误:没有CommService的提供程序!
错误:CommService没有提供程序
我试图在boot-server.ts中的providers中添加服务
这就是我得到的
异常:对节点模块的调用失败,错误:错误:未捕获(承诺中):错误:没有Http提供程序!(CommService->Http)
错误:没有Http的提供程序!(CommService->Http)
错误(本机)
我有三个模块文件
- app.module.shared.ts,其中包含
- app.module.server.ts,其中包含
那么我可以在哪里导入和注入我的服务呢我猜您在CommService中使用的是Http服务?如果您还提供了遇到困难的CommService类,这将非常有帮助 当您在服务器和客户端都使用的共享配置中提供CommService时,这两个配置都需要导入HttpModule。在您的情况下,只有客户端的应用程序模块导入HttpModule。如果您尝试在服务器上使用CommService,那么我猜您在CommService中使用的HttpModule将没有提供程序
您的问题实际上与asp.net无关,因为这与Angular中的导入/模块有关 最后我解决了这个问题,将服务添加到app.module.client、app.module.server和引导客户端,如下所示
const modulePromise = platformBrowserDynamic().bootstrapModule(AppModule, {providers:[CommService]});
是的,你是对的,我在使用Http,我在问题中添加了CommService代码,我对正常agnualr应用程序(服务器-客户端共享)中不存在的奇怪结构感到困惑。因此,我在客户端if课程中使用CommService,当我在app.module.shared.ts中添加it提供程序时,这不会返回CommService的提供程序,但我已经添加了,那么问题出在哪里?我是否需要将每台服务器添加到客户端和服务器文件?如果您仅在客户端使用CommService,我建议仅在客户端模块中提供,而不在共享模块中提供。这可能也会删除服务器模块中没有Http服务提供程序的错误。当我将其添加到app.module.client时,情况也是一样:没有CommService的提供程序@NgModule({bootstrap:sharedConfig.bootstrap,声明:sharedConfig.declarations,imports:[BrowserModule,FormsModule,HttpModule,…sharedConfig.imports],providers:[{Provider:'ORIGIN_URL',useValue:location.ORIGIN},CommService]})导出类AppModule{}`
export const sharedConfig: NgModule = {
bootstrap: [ AppComponent ],
declarations: [
AppComponent,
NavMenuComponent,
CounterComponent,
FetchDataComponent,
HomeComponent,
LoginComponent
],
imports: [
RouterModule.forRoot([
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', component: HomeComponent },
{ path: 'counter', component: CounterComponent },
{ path: 'fetch-data', component: FetchDataComponent },
{ path: 'login', component: LoginComponent },
{ path: '**', redirectTo: 'home' }
])
]
};
@NgModule({
bootstrap: sharedConfig.bootstrap,
declarations: sharedConfig.declarations,
imports: [
ServerModule,
...sharedConfig.imports
]
})
export class AppModule {
}
@NgModule({
bootstrap: sharedConfig.bootstrap,
declarations: sharedConfig.declarations,
imports: [
BrowserModule,
FormsModule,
HttpModule,
...sharedConfig.imports
],
providers: [
{ provide: 'ORIGIN_URL', useValue: location.origin }
]
})
export class AppModule {
}
const modulePromise = platformBrowserDynamic().bootstrapModule(AppModule, {providers:[CommService]});