угловая грунтовка динамических столбцов

У меня проблема с получением данных для моих динамических столбцов с помощью primeNg. У меня есть следующая структура JSON:

введите здесь описание изображения

Мой Component.ts выглядит так:

this.claimOverviewService.getCarClaimOverview(this.domain).then(claimOverview => {
  this.carClaimOverview = claimOverview;
  //console.log(this.carClaimOverview);
});

this.cols = [
  {field: 'id', header: 'VorgangsId', type: 'string'},
  {field: 'repairCosts', header: 'Reparaturkosten', type: 'number'},
  {field: 'status.name', header: 'Status', type: 'status'},
  {field: 'creationDate', header: 'Eingang', type: 'date'}
];

И мой Componjent.html выглядит так:

<p-table [columns]="cols" [value]="carClaimOverview" [paginator]="true" [rows]="10">
<ng-template pTemplate="header" let-columns>
  <tr>
    <th *ngFor="let col of columns" [pSortableColumn]="col.field">
      {{col.header}}
      <p-sortIcon [field]="col.field"></p-sortIcon>
    </th>
  </tr>
</ng-template>
<ng-template pTemplate="body" let-claim let-columns="columns">
  <tr>
    <td *ngFor="let col of columns">
      <span *ngIf="col.type !== 'date'">
        {{claim[col.field]}}
      </span>
      <span *ngIf="col.type === 'date'">
        {{claim[col.field] | date:'fullDate'}}
      </span>
    </td>
  </tr>
</ng-template>

My Datatable looks like this: enter image description here As you can see the column status is not displayed. My cols array got a field 'status.name', but the name does not appear. If i put status into the field i get [object Object] in my datatable. enter image description here

Таким образом, поле не обнаруживает подобъекты моего json. Есть ли возможность показать мои подобъекты или сообщить полю, что есть объект, лежащий под ним?


person Anton Styopin    schedule 27.06.2018    source источник
comment
Можете ли вы попробовать поставить status[name] в качестве поля столбца.   -  person Abdu Manas C A    schedule 27.06.2018
comment
Не работает .   -  person Anton Styopin    schedule 27.06.2018
comment
Попробуйте сделать status[0].name   -  person Manit    schedule 27.06.2018
comment
Кроме того, не могли бы вы вывести console.log(this.carClaimOverview[0].status) и console.log(this.carClaimOverview[0].status.name. Я предполагаю, что вы получаете массив объектов в своем поле статуса. Я могу ошибаться.   -  person Manit    schedule 27.06.2018
comment
Сначала это не работает. Кроме того, нужно сказать, что когда вы делаете array[0], вы получаете не массив объектов, а ОДИН объект, первый из массива. Если я наберу this.carClaimOverview[0].status, я получу объект json статуса первого объекта претензии. Это не нулевое значение. Внутри есть информация. Но поле не распознает подобъект. я могу ввести статус внутри, но datatable будет отображать [Object.object].   -  person Anton Styopin    schedule 27.06.2018
comment
КРАСИВЫЙ! Это работает очень хорошо :) Спасибо Sanoj_V. Может быть, вы поместите ответ на этот пост, чтобы я мог отметить его как правильный ответ.   -  person Anton Styopin    schedule 27.06.2018
comment
@AntonStyopin Я опубликовал ответ с меньшим описанием, если вы хотите добавить больше описания, вы можете добавить и принять его как ответ ??   -  person Sanoj_V    schedule 27.06.2018


Ответы (1)


Просто измените поле на claim[col.field]?.name.

Заменить cols объекта из

 {field: 'status.name', header: 'Status', type: 'status'},

к этому

 `{field: 'status', header: 'Status', type: 'status'},`
person Sanoj_V    schedule 27.06.2018
comment
не могли бы вы объяснить claim[col.field]?.name - person Abdu Manas C A; 27.06.2018
comment
@AbduManaz, очевидно, объект не привязывается к html dom, вам нужно указать ключ статический или динамический. В данном случае claim[col.field], т.е. claim[status], который содержит объект и всегда показывает вам [object Object]. Здесь вам нужно указать ключ, как это сделал я. - person Sanoj_V; 27.06.2018
comment
В порядке. Я понял это, но чего я не понял, так это символа ? и использования .name вне квадратных скобок. Любое объяснение очень ценится. - person Abdu Manas C A; 27.06.2018
comment
@AbduManaz проверит, есть ли у объекта status ключ name или нет. этот ? обрабатывает ошибку только на html-странице, когда ваши данные асинхронны. - person Sanoj_V; 27.06.2018