我正在使用离子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
但同样的错误
答案 0 :(得分:7)
您是否在HttpModule
模块中导入了App
?
import { HttpModule } from '@angular/http';
@NgModule({
imports: [HttpModule]
})
答案 1 :(得分:2)
当我在事件ionViewWillLoad
或ionViewDidLoad
而不是ionViewLoaded
当我在app.component.ts
上导入HttpModule时,代码也能正常工作import { HttpModule} from "@angular/http";
并将其添加到此类提供商
providers: [EliteApi,HttpModule]
答案 2 :(得分:1)
您还需要在使用它之前在构造函数中注入服务,如下所示:
constructor(public eliteApi:EliteApi){ }