我在父组件的模板中有类似的东西(父组件正在被测试)
<div *ngFor="let data of _dataRows; let i=index">
<child-cmp [data]="data"></child-cmp>
</div>
<button (click)="sortDataRows()"></button>
当我单击测试中的按钮时,在父组件(被测试的组件)中对数据行进行排序。但是子组件在模板上的顺序不会改变。如果没有ngFor
,当被测试的父组件调用方法时,子组件确实会在我的代码中更新它们的模板。
这是我的父组件中的sortDataRows()
方法(是的,在应用程序中一切都工作!):
private sortDataRows(sortValues: any): void {
this._dataRows.sort(function(a: any, b: any): number{
if (!a[sortValues.fieldName] || !b[sortValues.fieldName]) {
//this will handle sorting of Null or undefined for any type
return this.compareNullvalues(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
}
if (a[sortValues.fieldName] instanceof Date || Number.isInteger(a[sortValues.fieldName])) {
return this.compareNumbersOrDates(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
} else {
return this.compareStringValues(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
}
});
}
这是Angular目前的一个开放bug - https://github.com/angular/angular/issues/12642