【问题标题】:Error: No provider for http in constructor parameter with Ionic错误:Ionic 的构造函数参数中没有 http 的提供者
【发布时间】:2017-09-08 17:01:47
【问题描述】:

我正在学习葡萄牙语教程,该教程教授如何构建您的第一个 Ionic 应用程序。

在使用最新版本安装 npm、node.js、angular、Ionic 和 Cordova 后,我开始编写代码。代码本身真的很简单:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

export class HomePage {

  public feeds: Array<string>;
  private url: string = "https://www.reddit.com/new.json";

  constructor(public navCtrl: NavController, public http: Http) {

    this.http.get(this.url).map(res => res.json()).subscribe(data => {
        this.feeds = data.data.children;
      });
  }
}`

我基本上在使用 Reddit 的 API JSON,可以使用“url”变量中的链接访问它,它应该返回一个巨大的 JSON,对其进行转换并存储在“feeds”中。问题是每当我提供这个离子应用程序时,我都会收到这个错误:

我已经尝试解决这个问题,并发现如果我删除构造函数中的所有内容,我仍然会收到错误,但如果我删除 "public http: Http" 这是构造函数错误消失了。

寻找解决方案我看到有人建议将提供程序添加到@Component,但教程没有说明这一点。

我已经尝试重新安装所有东西,但我仍然收到错误。

你必须做什么来重现错误:

  • 安装最新版本的 npm;
  • 安装最新稳定版本的node.js;
  • 使用 npm 安装最新版本的 Angular;
  • 使用 npm 安装 ionic (2.2.2) 和 cordova (6.5.0) 最新版本;
  • 使用以下命令创建应用程序:ionic start MyReader blank --v2 --appname "Best Reader Ever" --id "com.tableless.myreader"
  • 将 MyReader/src/pages/home/home.ts 内容更改为上述脚本。

如果你想看一下教程本身,链接是:https://tableless.com.br/criando-uma-aplicacao-movel-com-ionic-2-e-angular-2-em-dez-passos/

【问题讨论】:

  • HttpModule 导入主模块将解决此问题
  • 我真的很抱歉问这个问题,但我刚刚开始学习 Angular 和 Ionic,你能告诉我如何导入它吗?谢谢!
  • 您可以在团队查看器中使用吗?
  • 我不使用团队查看器,但如果您愿意,我可以下载它。

标签: angular ionic-framework ionic2


【解决方案1】:

解决方案:HTTP_PROVIDERS 已从 angular2 中删除并替换为:HttpModule。

我所要做的就是添加:

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

到 src/app/app.module.ts 然后:

imports: [
  BrowserModule,
  HttpModule,
  IonicModule.forRoot(MyApp)
],

完成了。非常感谢大家。

【讨论】:

  • 如果我注入 HttpModule 我无法访问像 get 和 post 这样的 http 方法吗?
【解决方案2】:

使用下面的代码

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

provider : [ HTTP_PROVIDERS, ....


 ]

自 angular4 以来,上述答案已被弃用。但是正如我在评论中所说,

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

imports: [ HttpModule ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多