ОБНОВЛЕНИЕ: Это ошибка в Угловом < = 2.4.1. См. Мою статью «доказательство» ниже.AngularJS2: шаблон NgFor внутри Шаблон не работает правильно
У меня проблема с AngularJS (2.2) с шаблонами цикла для внутри шаблонов для отображения массива внутри массива.
См. Ниже MWE. На первом снимке показана начальная ситуация. Если вы нажмете кнопку один раз, я получу желаемый результат, однако, если я снова нажму кнопку, я получаю странный вывод (FIELD: 2 SUBFIELD: 2 ожидается)
Кажется, что for loop не работает правильно после инициализации. Как я могу это исправить?
Если я удаляю шаблон inner-For, я снова получаю желаемый результат только для FIELD.
MWE
import {Component} from '@angular/core';
import {Button,DataList} from 'primeng/primeng';
@Component({
selector: 'my-app',
template: `<button (click)="refreshData(dlist)">Press Me</button>
<p-dataList #dlist [value]="dataItems" [paginator]="true" [rows]="20" [lazy]="true" (onLazyLoad)="loadData($event)" [totalRecords]="totalRecords">
<header>Run {{run}}</header>
<template let-dataItem>
FIELD: {{dataItem.field}}
<template ngFor let-n [ngForOf]="dataItem.array">
SUBFIELD: {{n.item}}
</template>
</template>
</p-dataList>`
})
export class AppComponent {
dataItems : DataItem[];
totalRecords : number;
run : number;
constructor() {
this.run = 0;
}
loadData(event : any) {
}
refreshData(dtree : any) {
this.run++;
var json = "{ \"data\": [{\"field\": \""+this.run+"\", \"array\" : [{ \"item\": \""+this.run+"\"}]}]}";
console.log(json);
this.dataItems = <DataItem[]> JSON.parse(json).data;
// force paginator back to first page.
dtree.paginate({ first: 0 , rows: dtree.rows});
}
}
export interface DataItem {
array : MyValue[];
field: String;
}
export interface MyValue {
item : String;
}
Вы можете создать plunkr? – Aravind
Спасибо, что указал мне на Плункера. Я отправил решение самостоятельно: это ошибка в Angular, зафиксированная в 2.4.2 – robert