@@ -603,21 +603,38 @@ export class CdkTable<T> implements AfterContentChecked, CollectionViewer, OnDes
603
603
}
604
604
const viewContainer = this . _rowOutlet . viewContainer ;
605
605
606
- // @breaking -change 11.0.0 Remove null check for `_viewRepeater`
607
- // once it's a required parameter in the constructor.
608
- this . _viewRepeater ?. applyChanges (
609
- changes ,
610
- viewContainer ,
611
- ( record : IterableChangeRecord < RenderRow < T > > ,
612
- _adjustedPreviousIndex : number | null ,
613
- currentIndex : number | null ) => this . _getEmbeddedViewArgs ( record . item , currentIndex ! ) ,
614
- ( record ) => record . item . data ,
615
- ( change : _ViewRepeaterItemChange < RenderRow < T > , RowContext < T > > ) => {
616
- if ( change . operation === _ViewRepeaterOperation . INSERTED && change . context ) {
617
- this . _renderCellTemplateForItem ( change . record . item . rowDef , change . context ) ;
606
+ // @breaking -change 11.0.0 Remove null check for `_viewRepeater` and the
607
+ // `else` clause once `_viewRepeater` is turned into a required parameter.
608
+ if ( this . _viewRepeater ) {
609
+ this . _viewRepeater . applyChanges (
610
+ changes ,
611
+ viewContainer ,
612
+ ( record : IterableChangeRecord < RenderRow < T > > ,
613
+ _adjustedPreviousIndex : number | null ,
614
+ currentIndex : number | null ) => this . _getEmbeddedViewArgs ( record . item , currentIndex ! ) ,
615
+ ( record ) => record . item . data ,
616
+ ( change : _ViewRepeaterItemChange < RenderRow < T > , RowContext < T > > ) => {
617
+ if ( change . operation === _ViewRepeaterOperation . INSERTED && change . context ) {
618
+ this . _renderCellTemplateForItem ( change . record . item . rowDef , change . context ) ;
619
+ }
620
+ } ) ;
621
+ } else {
622
+ changes . forEachOperation (
623
+ ( record : IterableChangeRecord < RenderRow < T > > , prevIndex : number | null ,
624
+ currentIndex : number | null ) => {
625
+ if ( record . previousIndex == null ) {
626
+ const renderRow = record . item ;
627
+ const rowDef = renderRow . rowDef ;
628
+ const context : RowContext < T > = { $implicit : renderRow . data } ;
629
+ this . _renderRow ( this . _rowOutlet , rowDef , currentIndex ! , context ) ;
630
+ } else if ( currentIndex == null ) {
631
+ viewContainer . remove ( prevIndex ! ) ;
632
+ } else {
633
+ const view = < RowViewRef < T > > viewContainer . get ( prevIndex ! ) ;
634
+ viewContainer . move ( view ! , currentIndex ) ;
618
635
}
619
- }
620
- ) ;
636
+ } ) ;
637
+ }
621
638
622
639
// Update the meta context of a row's context data (index, count, first, last, ...)
623
640
this . _updateRowIndexContext ( ) ;
0 commit comments