Angular2 Итерировать JSON в компоненте

Я пытаюсь повторить JSON с разными данными.

Я использую Angular2, детали Ag-grid Master, с подробным шаблономCellRendererParams:

У меня проблема, когда я пытаюсь повторить свой JSON для получения данных.

 ngOnInit() {
    this.gridOptions = <GridOptions>{};
    this.detailCellRendererParams = {
      detailGridOptions: {
        onGridReady: function(params) {
          params.api.sizeColumnsToFit();
        }
      },

      getDetailRowData: function(params) {},

  template: function(params) {
    console.info('before');
    console.info('datas ', params.data.masterdetail);
    for (const valor of params.data.masterdetail) {
      console.info('eyy');
      if (params.data.masterdetail.hasOwnProperty(valor)) {
        console.info('este valor es : ', valor);
      }
    }
    console.info('after');
    // console.info('template ', params.data.masterdetail);
    return '<div class = "aggrid--full-row-container">' + '<div ref = "eDetailGrid" </div>' + 'asereje ' + '</div>';
  }
 };
}

Никогда не присоединяйтесь к ...

Angular2 Итерировать JSON в компоненте

Вы можете увидеть, как я получаю данные 4 в console.info('datas ', params.data.masterdetail);

Новое обновление кода:

 console.info('before');
 console.info('datas ', params.data.masterdetail);
 const objects = JSON.parse(params.data.masterdetail);
    for (const obj of objects) {
      const keys = Object.keys(obj);
      keys.forEach(key => {
        console.info(obj[key]);
      });
    }
    console.info('after');

Ошибка:

ERROR SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at template (projectunits.component.ts:43)
at DetailCellRenderer.webpackJsonp../node_modules/ag-grid-enterprise/dist/lib/rendering/detail/detailCellRenderer.js.DetailCellRenderer.selectAndSetTemplate (detailCellRenderer.js:96)
at DetailCellRenderer.webpackJsonp../node_modules/ag-grid-enterprise/dist/lib/rendering/detail/detailCellRenderer.js.DetailCellRenderer.init (detailCellRenderer.js:33)
at ComponentResolver.webpackJsonp../node_modules/ag-

Angular2 Итерировать JSON в компоненте

Я получаю эти данные как un file.json. Структурируйте мой Json:

{

 "headers": [ 
   "headerName": "asdasd",
 ],   //end headers

  "datas": [

  "idaam": "11",
  "idorigen": "11",

   "masterdetail": {
        "child1": {
          "name": "I AM",
          "age": "1"

        },

        "child2": {
          "name": "YOU ARE",
          "age": "2"
        },

        "child3": {
        "name": "HE IS",
        "age": "3"
        },
    } //end masterdetail
  ]//end datas

}//end JSON

обновил мой ответ, попробуйте

Pranay Rana 15.05.2018 13:08

Можете ли вы проверить длину params.data.masterdetail в отображаемой консоли или undefined

Sanoj_V 15.05.2018 13:30

Я обновил код и мой Json

EduBw 15.05.2018 13:35

ваше значение "masterdetail" должно быть в формате "masterdetail": [{"child1":{"name":"I AM","age":"1"}},{"child2":{"name":"YOU ARE","age":"2"}},{"child3":{"name":"HE IS","age":"3"}}], тогда вы можете выполнить итерацию правильно.

Sanoj_V 15.05.2018 13:44

вы уверены, что это json, потому что JSON.parse не работает, как вы мне сказали

Pranay Rana 15.05.2018 13:51

Можете ли вы поделиться кодом в stackbiz, я работаю с ag-grid и никогда не обнаружил, что он возвращает json

Pranay Rana 15.05.2018 13:52

можешь попробовать JSON.stringify(, обновил мой ответ

Pranay Rana 15.05.2018 13:55

Да, мне нужно «[]», но я не могу выполнить итерацию child1, child2 ... Я использую params.data.masterdetail.forEach ((data) => {});

EduBw 15.05.2018 15:27
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
8
82
2

Ответы 2

похоже, что это не данные json, вы можете попробовать

params.data.masterdetail.forEach((data)=>{
});

В качестве его json вы должны разделить json на объект, а затем сделать для этого

 const objects = JSON.prase(JSON.stringify(params.data.masterdetail));
 for(const obj of objects){
   const keys = Object.keys(obj);
   keys.forEach((key)=> {
    console.info(obj[key]);
  });
 }

@EduBw - тогда это не данные json, я думаю

Pranay Rana 15.05.2018 13:14

@EduBw - можете ли вы попробовать foreach на своем объекте

Pranay Rana 15.05.2018 13:18

Ошибка: params.data.masterdetail.forEach не является функцией

EduBw 15.05.2018 13:34

Вот мой ответ. Перед синтаксическим анализом вы можете проверить, являются ли данные объектом или простой строкой. Этот код предполагает, что вы уверены, что получаете JSON вместо массива.

const objects = (typeof params.data.masterdetail == 'object') ?  JSON.parse(params.data.masterdetail) : params.data.masterdetail;
for (const obj in objects) {
  const data = objects[obj];
  //Bellow if each attribute data
}

core.js: 1449 ОШИБКА SyntaxError: Неожиданный токен o в JSON в позиции 1 в JSON.parse (<anonymous>) в шаблоне (projectunits.component.ts: 45) в DetailCellRenderer.webpackJsonp ../ node_modules / ag-grid-enter‌ Приз / dist / lib / rende‌ кольцо / деталь / detailCe‌ llRenderer.js.Detail‌ CellRenderer.selectA‌ ndSetTemplate

EduBw 15.05.2018 13:33

Да, просто скажите нам, что содержится в params.data.masterdetail

Ulrich Dohou 15.05.2018 13:35

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