Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用ASP Core 1.1在angular 2中注入服务_Angular_Typescript_Dependency Injection_Asp.net Core_Single Page Application - Fatal编程技术网

Can';t使用ASP Core 1.1在angular 2中注入服务

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中添加服务 这就是我得到的 异常:对节点模块的调用失败,错误:错误:未捕获(承诺中

我正在使用Angular 2,并试图将服务注入我的应用程序 因此,我在sharedConfig“app.module.shared.ts”中添加了
提供者:[CommService]
当我尝试运行我得到的应用程序时

异常:对节点模块的调用失败,错误:错误:未捕获(承诺中):错误:没有CommService的提供程序! 错误:CommService没有提供程序

我试图在boot-server.ts中的providers中添加服务 这就是我得到的

异常:对节点模块的调用失败,错误:错误:未捕获(承诺中):错误:没有Http提供程序!(CommService->Http) 错误:没有Http的提供程序!(CommService->Http) 错误(本机)

我有三个模块文件

  • app.module.shared.ts,其中包含
```

```

  • app.module.server.ts,其中包含
```

``` -app.module.client.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]});