Ionic Angular Mobile App 在从项目中的文件中获取和显示 json-array 数据时显示错误---

Posted

技术标签:

【中文标题】Ionic Angular Mobile App 在从项目中的文件中获取和显示 json-array 数据时显示错误---【英文标题】:Ionic Angular Mobile App showing error while fetching and displaying json-array data from a file within the project --- 【发布时间】:2021-08-27 09:59:36 【问题描述】:

这是一个带有 Angular 的 Ionic 移动应用。相关问题,使用 Ionic Framework 和 Angular TS 作为后端。我对 ionic 应用程序开发完全陌生。

我创建了这个 stackblitz 来模拟我的需求 ---> https://stackblitz.com/edit/ionic-6h9vwa

目标是在分类标签页上绑定和显示来自 cat_data.json 文件[将在 assets/data/ 文件夹中找到] 的分类数据。 我当前遇到的错误,您可以在控制台中看到 -> ERROR 错误:this.catData.loadCategories 不是函数

这行代码在category-list.html页面的后端.ts文件中。 像这样:

ionViewDidEnter()
  
    return this.catData.loadCategories();
  

与问题相关的大部分代码我已尽力安排。 我无法获取和显示数据,即使在尝试了多个 no 之后也是如此。烫发。和梳子。 我需要让这个工作。至少以某种形式显示它,最好是在离子网格和离子行、离子列排列中。希望你能理解。如果这样做了,我至少可以在正确的实现中使用它。

我猜你可以分叉它并工作/修改它或编辑原始闪电战本身。随意。

想要这个工作。

【问题讨论】:

【参考方案1】:

在 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://***.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>

【讨论】:

不,我不使用外部 URL。该文件仅在我的项目结构中。一个名为 cat_data.json .... 的 json 文件,数据仅在其中,正如您在我的 stackblitz 中看到的那样。 @uKioops 是的,因为它是 atmo,事情并不容易你能告诉我在这种情况下我该怎么做.....因为数据不是来自外部 URL;令人头疼....任何可以使这更容易的替代想法或安排....感谢对来自外部 URL 案例场景的数据的代码块的扩展, 我编辑了我的答案,尝试了一些新的东西 好的,它在这里工作。随着上次更新 嗨@uKioops,让我读完整本书并仔细阅读,我会回来的, 嗨@uKioops,只是问,你是创建了一个新的单独的堆栈闪电战还是只在我的上编辑过,

以上是关于Ionic Angular Mobile App 在从项目中的文件中获取和显示 json-array 数据时显示错误---的主要内容,如果未能解决你的问题,请参考以下文章

Taylor Digital 招Intermediate Angular/Ionic Mobile Developer

无法在 app.component Ionic / Angular 中获取数据

ionic3+angular4开发混合app 之自定义组件

用angular7+Ionic做移动App做成了webapp引发的系列问题

如何从 Ionic 5 中的@ionic/angular 错误修复成员事件

APP IONIC3 angular4