получить данные из локального файла Json ionic 3

Я начинаю фиктивный проект в Ionic. Я пытаюсь получить данные из локального файла Json, но у меня возникает эта ошибка: введите здесь описание изображения

Я не понимаю, почему нет провайдера для HttpClient. Для получения дополнительной информации я действительно пытался следовать этому руководству: https://www.youtube.com/watch?v=vuc4dp0qHSc

Как я могу исправить эту ошибку и получить данные?

Версии

Ионный 3.18.0

Угловой 5.0.1

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';

import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { FirstPage } from '../pages/first/first';
import { CardsDataProvider } from '../providers/cards-data/cards-data';

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    FirstPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    FirstPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    CardsDataProvider,

  ]
})
export class AppModule {}

cards-data.ts

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';

/*
  Generated class for the CardsDataProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class CardsDataProvider {

  constructor(public http: HttpClient) {
    console.log('Hello CardsDataProvider Provider');
  }

  getLocalData() {
  this.http.get('../assets/data/cards.json').map(res => res.json()).subscribe(data => 
  {
    console.log(data);
  });  
}
}

home.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { FirstPage } from '../first/first';
import { CardsDataProvider } from '../../providers/cards-data/cards-data';


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

  constructor(public navCtrl: NavController, public CardsService: CardsDataProvider) {

  }
  openFirstPage() {
    this.navCtrl.push(FirstPage);
  }

  ionViewDidLoad() {
    this.CardsService.getLocalData();
  }
} 

Любая помощь будет оценена.


person Ryley38    schedule 29.11.2017    source источник


Ответы (1)


Вы следуете руководству по Ionic2 при использовании Ionic3 с Angular5.

Чтобы Http работал, начиная с Ionic 3.0, вам необходимо включить HttpClientModule в свой импорт в app.module.ts.

import {HttpClientModule} from '@angular/common/http';//import

@NgModule({
  declarations: [
    MyApp,
    HomePage,
    FirstPage
  ],
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
    HttpClientModule//include here
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
    FirstPage
  ],
  providers: [
    StatusBar,
    SplashScreen,
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    CardsDataProvider,

  ]
})
export class AppModule {}

Кроме того, в файле cards-data.ts

import {Http} from '@angular/common/http';

@Injectable()
export class CardsDataProvider {

  constructor(public http: HttpClient) { //change here
    console.log('Hello CardsDataProvider Provider');
  }

Чтобы узнать о дальнейших изменениях для перехода с Ionic 2 на 3, проверьте здесь . Изменения, необходимые для перехода на Angular 5, проверьте здесь.

Более простой способ — найти более свежий учебник.

person Suraj Rao    schedule 30.11.2017
comment
Спасибо за ваш ответ. Я не исправил проблему. Я пытался найти учебник по ionic 3, но на данный момент мне это не удалось. Если у вас есть какие-либо рекомендации о том, как хранить данные локально, я заинтересован. - person Ryley38; 01.12.2017
comment
@ Ryley38 обновленный ответ .. - person Suraj Rao; 01.12.2017