Как отобразить содержимое объекта JSON с несколькими массивами в angular html?

Я создал объект JSON, который содержит массивы, соответствующие полям файла CSV, которые были проанализированы с помощью библиотеки Papa Parse. Я хотел бы отобразить их в HTML, но я не знаю, как извлечь массивы из объекта JSON и поместить их в переменную, чтобы ее можно было отобразить в html.

машинопись

 func(){
    this.fileHasBeenUploaded = true;
    this.csvData = reader.result as string;
    console.info(this.csvData);
    console.info(this.papa.parse(this.csvData));
    this.resultObj = this.papa.parse(this.csvData);}

HTML

<div *ngIf='fileHasBeenUploaded'>
TESTING TESTING: 

<div *ngFor = "let i of resultObj">
  <span *ngFor = "let j of i">
    {{j}}
  </span>
</div>
<div>
  the array is: {{resultObj}}
</div>

Мои вложенные циклы *ngFor дают ошибку, и попытка отобразить объект напрямую отображает только «[object Object]»

Вам будет легче искать и вообще говорить о проблеме, если вы просто называете их «объектами» и «массивами», а не упоминаете JSON, если только вы на самом деле не имеете дело с текстовыми/строковыми переменными в JavaScript.

Heretic Monkey 15.07.2019 21:27

Возможный дубликат Получение имени свойства объекта

nullptr.t 15.07.2019 21:36

Можете ли вы опубликовать пример ваших данных?

Nadhir Falta 15.07.2019 21:39

Вы хотите показать данные для целей отладки или в элегантном виде? В целях отладки вы можете использовать <pre>{{resultObj | json}}</pre>

julianobrasil 15.07.2019 22:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой способ - преобразовать ваш объект, содержащий массивы, в массив, содержащий массивы. *ngFor может перебирать только итерируемые объекты.

модель.ts

export interface ObjectContainingArrays<T = any> {
    [key:string]: Array<T>;
}

компонент.ts

public func():void {
   this.fileHasBeenUploaded = true;
   this.csvData = reader.result as string;
   const resultObj:ObjectContainingArrays = this.papa.parse(this.csvData) as any;
   this.resultArr = Object.values(resultObj);
}

компонент.html

<div *ngFor = "let i of resultArr">
   <span *ngFor = "let j of i">
      {{j}}
    </span>
</div>

Редактировать: Обновлено для использования любого вместо неизвестного

Редактировать2: удалена аннотация типа в назначении (синтаксическая ошибка).

Я получаю сообщение об ошибке, что PapaParseResult не может быть назначен для типа «ObjectContainingArrays <unkown>», а также «Оператор» < не может быть применен к типам «логический» и «число». и "Не удается найти имя "неизвестно""

bigcoder536 15.07.2019 23:04

Поскольку я понятия не имею, что такое PapaParseResult (вы никогда не упоминали этот тип данных), я представил свой собственный, чтобы показать структуру того, что я ожидал от ваших данных. Не стесняйтесь удалить это в вашем случае и вместо этого использовать PapaParseResult. Неизвестный был представлен в недавнем обновлении машинописного текста. Возможно, у вас более старая версия — используйте «любая» вместо неизвестной. Не вижу ничего, что могло бы вызвать ошибку «оператора». Может быть, в коде, который вы не опубликовали?

pascalpuetz 15.07.2019 23:10

@ bigcoder536 Извините, у меня была ошибка в коде: this.resultArr была аннотация типа, хотя это присваивание. Я соответствующим образом изменил код.

pascalpuetz 15.07.2019 23:14

Другие вопросы по теме