Угловой «let-col» не передает все свойства - PullRequest
3 голосов
/ 04 мая 2019

Я пытаюсь передать дополнительные поля, чтобы помочь с обработкой. Вот как я определяю массив столбцов:

this.columns = [
        {field: 'vin', header: 'Vin', isMultiRowColumn: true },
        {field: 'year', header: 'Year', isMultiRowColumn: false},
        {field: 'brand', header: 'Brand', isMultiRowColumn: false},
        {field: 'color', header: 'Color', isMultiRowColumn: false}
    ];

Теперь, когда я запускаю следующий код:

<p-dataTable [value]="testData">
  <p-column *ngFor="let col of columns" [field]="col.field" [header]="col.header">
    <ng-template let-col let-dt="rowData" pTemplate="body">
     <span>{{dt[col.field] + '-' + col.isMultiRowColumn }}</span>
    </ng-template>
  </p-column>
</p-dataTable>

Я получаю это:

dsad231ff-undefined 2012-undefined  VW-undefined    Orange-undefined

Есть ли причина, по которой isMultiRowColumn не передается?

Спасибо за помощь

1 Ответ

3 голосов
/ 04 мая 2019

С помощью let-col свойство контекста $ implicit становится доступным как col в шаблоне для привязок. и вы выбрали переменную col в ngfor так же, как let-col, когда вы определяете let-col, она создает новую переменную, которая ссылается на таблицу col, имеющую свойство поля, и не ссылается на вашу переменную col, определенную в ngFor, у него есть свойство поля, но нет свойства isMultiRowColumn, поэтому попробуйте изменить переменную ngfor с col на что-то другое, например column:

также проверьте: Что такое let- * в шаблонах Angular 2?

<p-dataTable [value]="testData">
  <p-column *ngFor="let column of columns" [field]="column.field" [header]="column.header">
    <ng-template let-col let-dt="rowData" pTemplate="body">
     <span>{{dt[column.field] + '-' + column.isMultiRowColumn }}</span>
    </ng-template>
  </p-column>
</p-dataTable>

см. DEMO , нажмите кнопку и проверьте журнал в своем браузере, чтобы увидеть, что на самом деле является col.

...