在 app.module.ts 中删除 {provide: CategoryData, useClass: HttpClient}
并替换为
providers: [
{ provide: ErrorHandler, useClass: IonicErrorHandler },
CategoryData
]
它消除了您遇到的错误。
不要忘记订阅 observable 并且在订阅中您通常可以提取 categories.ts 上的数据
ionViewDidEnter()
{
this.catData.loadCategories().subscribe(p => {
console.log(p)
});
}
目前你得到[]。
在 Stackblitz 上,无法提取(或不那么容易).json 文件,但在您的 IDE 上是可行的。检查:https ://stackoverflow.com/a/55580172/16027883
在您的服务上添加:
getJsonData(filePath: string){
return this.http.get(filePath);
}
并在您的 .ts 中使用它
ionViewDidEnter(){
this.catData.getJsonData('./assets/cat_data.json').subscribe(resData => {
this.data = resData;
console.log(this.data);
})
}
在控制台中,您可以看到: {categories: Array(3)} 包含所有元素。您需要提取它以在您的 html 中显示它。
最终更新:
在您的页面 .ts
data: any;
dataShow = [];
ionViewDidEnter(){
this.catData.getJsonData('./assets/cat_data.json').subscribe(resData => {
this.data = resData;
this.dataShow = this.data.categories
})
}
在您的 html 中:
<ion-content >
<ion-grid>
<ion-row>
<ion-col size-sm="8" offset-sm="2">
<ion-card *ngFor="let data of dataShow">
<ion-card-title>{{data.c_id}}</ion-card-title>
<ion-card-subtitle>{{data.c_name}}</ion-card-subtitle>
<ion-card-content>
{{data.c_description}}
</ion-card-content>
</ion-card>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>