首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用httpClient实现内存中的角化web循环依赖

用httpClient实现内存中的角化web循环依赖
EN

Stack Overflow用户
提问于 2017-11-06 10:56:26
回答 1查看 984关注 0票数 0

我尝试使用angular-in-memory-web-api (0.5.1版)。如果我用本地对象设置“数据库”,这很好,但如果我试图通过http请求从本地JSON文件中获取数据,并出现以下错误,它就会失败:

未知错误:提供者解析错误:不能实例化循环依赖!HttpClient ("ERROR ->"):在./ AppModule @-1:-1中的NgModule AppModule中

一旦我将httpClient包导入到我的服务中。

app.module.ts:

代码语言:javascript
复制
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
// Imports for loading & configuring the in-memory web api
import { HttpClientInMemoryWebApiModule } from 'angular-in-memory-web-api';
import { InMemoryDataService } from 'app/shared/services/in-memory-data.service';

import { AppComponent } from './app.component';
// other imports of app components

@NgModule({
  imports:      [
    BrowserModule,
    HttpClientModule,
    HttpClientInMemoryWebApiModule.forRoot(InMemoryDataService),    // always import after the HttpClientModule
  ],
  declarations: [
    AppComponent,
    // ...
  ],
  providers: [ // app wide services not concerning the problem ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

内存中数据服务:

代码语言:javascript
复制
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { InMemoryDbService } from 'angular-in-memory-web-api';
import { RequestInfo } from 'angular-in-memory-web-api';

@Injectable()
export class InMemoryDataService implements InMemoryDbService {       
  // constructor(http: HttpClient) { // this creates the cyclic dependency
  constructor() {

  }    
  createDb(reqInfo?: RequestInfo) {
    const db = {}   
    // fetch data from local JSON files and set up "database" object    
    return db;
  }

}

这个问题是与HttpClientModule有关还是angular-in-memory-web-api问题?

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 11:24:46

我也面临着同样的问题,这就是我如何能够解决它,不要注入构造函数,而是尝试在方法中这样做。

在您的createDB中,您将正确地注入httpclient,而不会出现循环错误。

代码语言:javascript
复制
import { Injectable, Injector } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { InMemoryDbService } from 'angular-in-memory-web-api';
import { RequestInfo } from 'angular-in-memory-web-api';

@Injectable()
export class InMemoryDataService implements InMemoryDbService {  
  httpClient: HttpClient;
  constructor(private inject: Injector) {

  }    
  createDb(reqInfo?: RequestInfo) {
    const db = {}   
    this.httpClient = this.inject.get(HttpClient);
    // fetch data from local JSON files and set up "database" object    
    return db;
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47135302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档