StaticInjectorError(AppModule)错误

时间:2018-03-21 22:21:14

标签: angular ionic-framework ionic3

我才开始学习如何使用Angular 2和Ionic 3.20.0,但现在面临挑战。我试图在我的主页上显示产品图片,但该应用程序正在抛出此错误

  

错误错误:未捕获(承诺):错误:StaticInjectorError(AppModule)[主页 - > ProductProvider]

我已导入ProductProvider服务并将其添加到app.module.ts文件中的提供程序。

import { ProductProvider } from '../providers/product/product';

@NgModule({
...  
providers: [
  StatusBar,
  SplashScreen,
  {provide: ErrorHandler, useClass: IonicErrorHandler},
  ProductProvider
]

现在分别是products.ts和home.ts文件

product.ts

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

@Injectable()
export class ProductProvider {

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

getProducts(){
   return this.http.get('/assets/data.json')
     .map(response => response);
}
}

home.ts

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

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
public allProducts = [];

constructor(private productProvide: ProductProvider, private http: Http, 
public navCtrl: NavController) {

}

ionViewDidLoad(){
    this.productProvide.getProducts()
      .subscribe((response) => {
    this.allProducts = response;
});
}
}

为什么我的代码会抛出此错误?

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令生成提供程序:

ionic g provider <provider_name>

Ionic CLI将生成所有必要的东西

答案 1 :(得分:1)

我没有指定ProductProvider的getProducts()方法中返回的类型,因此http客户端认为它是一个返回的对象并导致错误。我能够通过添加任何[]到http来像这样return this.http.get<any[]>('/assets/data.json')

来修复它