Я пытаюсь повторить 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>';
}
};
}
Никогда не присоединяйтесь к ...
Вы можете увидеть, как я получаю данные 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-
Я получаю эти данные как 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
Можете ли вы проверить длину params.data.masterdetail в отображаемой консоли или undefined
Я обновил код и мой Json
ваше значение "masterdetail" должно быть в формате "masterdetail": [{"child1":{"name":"I AM","age":"1"}},{"child2":{"name":"YOU ARE","age":"2"}},{"child3":{"name":"HE IS","age":"3"}}], тогда вы можете выполнить итерацию правильно.
вы уверены, что это json, потому что JSON.parse не работает, как вы мне сказали
Можете ли вы поделиться кодом в stackbiz, я работаю с ag-grid и никогда не обнаружил, что он возвращает json
можешь попробовать JSON.stringify(, обновил мой ответ
Да, мне нужно «[]», но я не могу выполнить итерацию child1, child2 ... Я использую params.data.masterdetail.forEach ((data) => {});





похоже, что это не данные 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, я думаю
@EduBw - можете ли вы попробовать foreach на своем объекте
Ошибка: params.data.masterdetail.forEach не является функцией
Вот мой ответ. Перед синтаксическим анализом вы можете проверить, являются ли данные объектом или простой строкой. Этот код предполагает, что вы уверены, что получаете 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
Да, просто скажите нам, что содержится в params.data.masterdetail
обновил мой ответ, попробуйте