2016-10-21 5 views
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); 
     } 
    }); 
} 
+0

あなたのコードを投稿することができますコンポーネントとテストコード –

+0

ちょうど、ありがとう! – coder

答えて

関連する問題