没有ConnectionBackend for ionic 2的提供者

时间:2016-12-30 00:38:42

标签: angular ionic-framework ionic2

我正在使用离子2,我创建了一个简单的服务

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

@Injectable()
export class EliteApi {

  private baseUrl="https://myurl.com";
    constructor(private http:Http) { }

    getTournaments(){
      return new Promise(resolve =>{
        this.http.get(this.baseUrl + 'tournaments.json').subscribe(res => resolve(res.json()));

      });
    }
}

然后我在这样的app.component.ts上导入它来注册服务

import { EliteApi } from './shared/shared';
import {Http} from "@angular/http";

@Component({
  templateUrl: 'app.html',
  providers: [EliteApi,Http]
})

在我的页面上我导入服务

import { EliteApi } from '../../app/shared/shared';

并且在加载的事件上我写了这个来获取json数据

  ionViewLoaded(){
    this.eliteApi.getTournaments().then(data => this.tournaments = data);
  }

它让我异常说 没有ConnectionBackend的提供者!

我试过像这里类似的一些问题说将服务放在提供者身上

@NgModule({   提供者:[EliteApi

但同样的错误

3 个答案:

答案 0 :(得分:7)

您是否在HttpModule模块中导入了App

import { HttpModule } from '@angular/http';

@NgModule({
   imports: [HttpModule]
})

答案 1 :(得分:2)

当我在事件ionViewWillLoadionViewDidLoad而不是ionViewLoaded

中输入我的代码时,问题就解决了

当我在app.component.ts

上导入HttpModule时,代码也能正常工作
import { HttpModule} from "@angular/http";

并将其添加到此类提供商

  providers: [EliteApi,HttpModule]

答案 2 :(得分:1)

您还需要在使用它之前在构造函数中注入服务,如下所示:

constructor(public eliteApi:EliteApi){ }