Angular 遇到未定义的提供程序!通常这意味着您有一个循环依赖项

Angular 遇到未定义的提供程序!通常这意味着您有一个循环依赖项,angular,autocomplete,ionic2,Angular,Autocomplete,Ionic2,我需要使用3个搜索栏,但每个都指向一个特定的搜索链接 我是这样做的: HTML <ion-auto-complete [dataProvider]="searchTypeImmobileProvider" [hideListOnSelection]="true" (itemSelected)="getSearchResultImmobile($event)"

我需要使用3个搜索栏,但每个都指向一个特定的搜索链接

我是这样做的:

HTML

 <ion-auto-complete [dataProvider]="searchTypeImmobileProvider"
                       [hideListOnSelection]="true"
                       (itemSelected)="getSearchResultImmobile($event)"
                       [options]="{ placeholder : 'placeholder.seachTypeImmobile' | translate, noItems: 'placeholder.noItemsTypeImmobile' | translate }"
                       #searchTypeImmobile></ion-auto-complete>

  <ion-auto-complete [dataProvider]="searchCitiesProvider"
                     [hideListOnSelection]="true"
                     (itemSelected)="getSearchCities($event)"
                     [options]="{ placeholder : 'placeholder.seachCities' | translate, noItems: 'placeholder.noItemsCities' | translate }"
                     #searchCities></ion-auto-complete>

  <ion-auto-complete [dataProvider]="searchCepsProvider"
                     [hideListOnSelection]="true"
                     (itemSelected)="getSearchCeps($event)"
                     [options]="{ placeholder : 'placeholder.seachDistrict' | translate, noItems: 'placeholder.noItemsDistrict' | translate }"
                     #searchDistrict></ion-auto-complete>
提供商CEP

import {HttpClient} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {AutoCompleteService} from 'ionic2-auto-complete';
import 'rxjs/add/operator/map'
import {environment} from "../environments/env";


/*
  Generated class for the SearchCitiesProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class SearchCepsProvider implements AutoCompleteService {
  labelAttribute = "name";
  formValueAttribute = "";
  host = environment.api.url;

  constructor(private http: HttpClient) {
  }

  getResults(keyword: string) {
    return this.http.get(this.host + '/ceps/search/' + keyword)
      .map(
        (result: any) => {
          console.log(result)
          return result.data.filter(item => item.name.toLowerCase().startsWith(keyword.toLowerCase()))
        });
  }
}
供应商城市

import {HttpClient} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {AutoCompleteService} from 'ionic2-auto-complete';
import 'rxjs/add/operator/map'
import {environment} from "../environments/env";


/*
  Generated class for the SearchCitiesProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class SearchCitiesProvider implements AutoCompleteService {
  labelAttribute = "name";
  formValueAttribute = "";
  host = environment.api.url;

  constructor(private http: HttpClient) {
  }

  getResults(keyword: string) {
    return this.http.get(this.host + '/cities/search/' + keyword)
      .map(
        (result: any) => {
          console.log(result)
          return result.data.filter(item => item.name.toLowerCase().startsWith(keyword.toLowerCase()))
        });
  }
}
提供商类型不可移动

import {HttpClient} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {AutoCompleteService} from 'ionic2-auto-complete';
import 'rxjs/add/operator/map'
import {environment} from "../environments/env";


/*
  Generated class for the SearchCitiesProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class SearchCitiesProvider implements AutoCompleteService {
  labelAttribute = "name";
  formValueAttribute = "";
  host = environment.api.url;

  constructor(private http: HttpClient) {
  }

  getResults(keyword: string) {
    return this.http.get(this.host + '/cities/search/' + keyword)
      .map(
        (result: any) => {
          console.log(result)
          return result.data.filter(item => item.name.toLowerCase().startsWith(keyword.toLowerCase()))
        });
  }
}
这个错误出现了,我尝试了几种纠正方法,但是我不能,我不确定错误是什么

未捕获错误:遇到未定义的提供程序!通常这意味着您具有循环依赖关系(可能是由于使用“barrel”index.ts文件造成的)


幸运吗?解决这个问题?是的,但我不知道它是什么。我撤销了所有操作,然后又做了一次,这可能是由于缺乏关注。为什么你会有同样的问题?是的,你是对的。这是一个小的语法错误
import {HttpClient} from '@angular/common/http';
import {Injectable} from '@angular/core';
import {AutoCompleteService} from 'ionic2-auto-complete';
import 'rxjs/add/operator/map'
import {environment} from "../environments/env";


/*
  Generated class for the SearchCitiesProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class SearchCitiesProvider implements AutoCompleteService {
  labelAttribute = "name";
  formValueAttribute = "";
  host = environment.api.url;

  constructor(private http: HttpClient) {
  }

  getResults(keyword: string) {
    return this.http.get(this.host + '/cities/search/' + keyword)
      .map(
        (result: any) => {
          console.log(result)
          return result.data.filter(item => item.name.toLowerCase().startsWith(keyword.toLowerCase()))
        });
  }
}