我正在使用Yeoman generator-aspnetcore-spa,我试图在Angular 2中为我的应用注入服务
所以我在sharedConfig中添加了providers: [ CommService]
" app.module.shared.ts"
当我试图运行应用程序时
异常:调用节点模块失败并显示错误:错误:未捕获(在承诺中):错误:没有CommService的提供者! 错误:没有CommService的提供者!
@Injectable()
export class CommService {
constructor(private http: Http) { }
getUserIP() {
return this.http.get('http://api.ipify.org/?format=json')
.map(x => x.json());
}
}
我尝试在boot-server.ts中的提供程序中添加服务 这就是我得到的东西
异常:调用节点模块失败并显示错误:错误:未捕获(在承诺中):错误:没有Http的提供者! (CommService - > Http) 错误:没有Http提供商! (CommService - > Http) 在错误(本机)
我有三个模块文件
```
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 {
}
``` - 包含
的app.module.client.ts```
@NgModule({
bootstrap: sharedConfig.bootstrap,
declarations: sharedConfig.declarations,
imports: [
BrowserModule,
FormsModule,
HttpModule,
...sharedConfig.imports
],
providers: [
{ provide: 'ORIGIN_URL', useValue: location.origin }
]
})
export class AppModule {
}
```
所以我可以导入和注入我的服务
答案 0 :(得分:0)
我猜你在CommService中使用Http服务?如果您还提供了遇到困难的CommService类,那将非常有用。
当您在服务器和客户端使用的共享配置中提供CommService时,这两者都需要导入HttpModule。在您的情况下,只有客户端的应用程序模块导入HttpModule。如果您尝试在服务器上使用CommService,那么HttpModule将没有提供商,我猜您正在使用CommService。
您的问题与asp.net无关,因为这与Angular中的导入/模块有关。 https://angular.io/guide/ngmodule
答案 1 :(得分:0)
最后,我通过将服务添加到app.module.client,app.module.server以及像这样的boot-client解决了这个问题
conda install -n my-conda-env -c conda-forge rtree shapely