首页 > 解决方案 > Angular [CDK v10+] 在拖放 CDK 中找不到合适的替代“进入”已弃用功能的方法

问题描述

我在 stackblitz(某种代码窗格)中错误地使用了 10 岁以上的 Angular 版本。

在这里我找到了移动的函数进入github。但这对我的情况没有帮助。基于网格的拖放,具有在不同可拖动容器之间拖动的能力。从角拖放网格分叉。升级到最新版本 (12.1.2) 时出现的唯一错误是这里

this.placeholder.enter(
  drag,
  drag.element.nativeElement.offsetLeft,
  drag.element.nativeElement.offsetTop
);

错误:Property 'enter' does not exist on type 'CdkDropList<any>'

我找到的唯一参考是来自stack-overflow的这个页面。当我尝试解决方案时,行为被搞砸了,控制台正在记录这个错误ncaught RangeError: Maximum call stack size exceeded

目前是这种状态

我希望将此功能转移到最新的 CDK 版本而不会丢失该功能。

当我在版本之间来回切换时,我注意到它的行为cdkDropListEnterPredicate不像它的用途那样工作。

在 v9cdkDropListEnterPredicate中,每个像素都调用函数,但在 v 12 中,行为发生了变化。

要查看操作中的错误,请转到并将package.jsonfrom 更改"@angular/cdk": "9.1.2" 为:"@angular/cdk": "12.1.2" 我尝试使用但失败了。dragRefdropListRef

标签: javascriptangulartypescriptdrag-and-dropangular-cdk

解决方案


推荐阅读