我才开始学习如何使用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;
});
}
}
为什么我的代码会抛出此错误?
答案 0 :(得分:1)
您可以使用以下命令生成提供程序:
ionic g provider <provider_name>
Ionic CLI将生成所有必要的东西
答案 1 :(得分:1)
我没有指定ProductProvider的getProducts()方法中返回的类型,因此http客户端认为它是一个返回的对象并导致错误。我能够通过添加任何[]到http来像这样return this.http.get<any[]>('/assets/data.json')