【问题标题】:Ionic app shows not http provider error离子应用程序显示不是 http 提供程序错误
【发布时间】:2017-12-02 18:37:24
【问题描述】:

我正在尝试在 ionic 框架 3.1 应用程序中实现 http 请求。我使用 ionic g provider apidata command 创建了一个名为 apidata 的提供程序,之后我在其中创建了以下函数,该函数调用 api 并将其返回的数据记录在控制台上。

  getremotedata(){
console.log(this.http.get('https://reverie.oiamigotech.com/wp-json/wc/v2/products/?consumer_key=ck_xyz&consumer_secret=cs_xyz'));
  }

并且还在标头中将http包导入为import { Http } from '@angular/http';

之后我更新了 app.module.ts 文件以将提供程序导入为import { ApidataProvider } from '../providers/apidata/apidata';,并将其添加到提供程序列表中providers: [ StatusBar, SplashScreen, {provide: ErrorHandler, useClass: IonicErrorHandler}, ApidataProvider ]

现在,当我在导入包并使用以下函数和构造函数定义后尝试从主页调用相同内容时

constructor(public navCtrl: NavController,public ApidataService: ApidataProvider) {
  }
  ionViewDidLoad(){
    this.ApidataService.getremotedata();
  }

它产生了以下错误Uncaught (in promise): Error: No provider for Http!

有关集成的说明,请参阅https://www.youtube.com/watch?v=vuc4dp0qHSc

我是 ionic 新手,无法找到和调试问题。非常欢迎任何建议。

【问题讨论】:

    标签: angularjs api ionic-framework ionic3


    【解决方案1】:

    导入 HttpModule 并将其添加到 app.module.ts 页面中的导入下,如下所示,

    import { HttpModule } from '@angular/http';
    
    imports: [
         BrowserModule,
         HttpModule,
        IonicModule.forRoot(MyApp)
      ]
    

    删除 app.module.ts 页面中的任何其他 http 导入,这应该可以工作

    【讨论】:

    • 这工作正常,但似乎还有另一个问题,当我检查控制台日志时,它显示 main.js 的代码而不是 api 返回值。
    • 你想在 app.module 页面中控制什么? HttpModule 仅用于在 app.module.ts 页面上导入。要从 api 返回值,您必须像这样导入 http => import { Http } from '@angular/http' in your provider
    • 我也做了同样的事情,我只是想控制从 api 接收到的值,并将其集成到 app 模块中,因为函数体是在那里定义的。
    猜你喜欢
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2019-01-16
    • 2019-04-11
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多