1
私は親コンポーネントのテンプレートにこのようなものを持っています(親コンポーネントはテスト中です)。角度2単位テスト:レンダリングされた子コンポーネントのテンプレートを変更しますか?
<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);
}
});
}
あなたのコードを投稿することができますコンポーネントとテストコード –
ちょうど、ありがとう! – coder