Angular 是否可以将MatPaginator和cdkDragDrop组合成角度10?

Angular 是否可以将MatPaginator和cdkDragDrop组合成角度10?,angular,typescript,drag-and-drop,angular10,Angular,Typescript,Drag And Drop,Angular10,实际上,我在尝试将Angular中的本地拖放库与MatPaginator结合时遇到了一些问题。最后一个使用管道和从MatPaginatorIntl扩展的自定义配置 我想做的是将两者结合起来: 为此,我必须创建一个新方法moveItemInArray,因为默认方法只是“让我”在第一个页面中移动项目。这是值得的,如果您只想移动在单个页面中显示的一些数组项,即使如此,当您将所有项分布在多个页面中时,事情也会变得棘手 这就是为什么我创建了一个新方法来逐页比较索引: private moveItemI

实际上,我在尝试将Angular中的本地拖放库与MatPaginator结合时遇到了一些问题。最后一个使用管道和从MatPaginatorIntl扩展的自定义配置

我想做的是将两者结合起来:

  • 为此,我必须创建一个新方法moveItemInArray,因为默认方法只是“让我”在第一个页面中移动项目。这是值得的,如果您只想移动在单个页面中显示的一些数组项,即使如此,当您将所有项分布在多个页面中时,事情也会变得棘手

    这就是为什么我创建了一个新方法来逐页比较索引:

    private moveItemInArrayWithPag(array:Array<any>, previousIndex:number, currentIndex:number, currentPage:number, itemsPerPage:number):void{
    let firstPageIndex = 0;
    let arrayPreviousIndex = 0 ;
    let arrayCurrentIndex = 0;
    let currentFlag = false;
    let previousFlag = false;
    let counter = -1;
    
    firstPageIndex = ((currentPage * itemsPerPage) - itemsPerPage); //5 - 100 ---> 500-100 = 400
    let index = firstPageIndex - 1;
    
    while(!(currentFlag && previousFlag)){
      counter++;
      index++;
    
        if(counter === currentIndex){
          arrayCurrentIndex = index;
          currentFlag = true;
          }
    
        if(counter === previousIndex){
            arrayPreviousIndex = index;
            previousFlag = true;
        }
      }
      console.log("CURRENT:", arrayCurrentIndex, "PREVIOUS:", arrayPreviousIndex);
      moveItemInArray(array, arrayCurrentIndex, arrayPreviousIndex);
    }
    
    private moveIteminarayWithPag(数组:数组,上一个索引:编号,当前索引:编号,当前页面:编号,项目页面:编号):void{
    设firstPageIndex=0;
    设arrayPreviousIndex=0;
    设arrayCurrentIndex=0;
    让currentFlag=false;
    让previousFlag=false;
    设计数器=-1;
    firstPageIndex=((currentPage*itemsPerPage)-itemsPerPage);//5-100--->500-100=400
    设index=firstPageIndex-1;
    while(!(currentFlag&&previousFlag)){
    计数器++;
    索引++;
    如果(计数器===当前索引){
    arrayCurrentIndex=索引;
    currentFlag=true;
    }
    如果(计数器===上一个索引){
    arrayPreviousIndex=索引;
    previousFlag=true;
    }
    }
    log(“当前:”,arrayCurrentIndex,“上一个:”,arrayPreviousIndex);
    moveItemInArray(数组、arrayCurrentIndex、arrayPreviousIndex);
    }
    
    }

    我在html中得到了类似的东西:

    <div cdkDropList class="card-container"  (cdkDropListDropped)="onDropped($event)">
      <mat-card cdkDrag *ngFor="let items of items | paginate:page_size:page_number">
        ...
      </mat-card>
    </div>
    
    
    ...
    
    问题:数组正在更新,我可以拖动该项,但当我拖放它时,会返回到原始位置(在DOM中没有更新)。因此,分页器和拖放之间似乎存在一些冲突

    当paginator从该*ngFor中删除时,它工作得非常完美! 但那不是我真正想要的