首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cdkDropListEnterPredicate检查多个条件?

问如何使用cdkDropListEnterPredicate检查多个条件?
EN

Stack Overflow用户
提问于 2020-01-11 16:11:59
回答 2查看 2.8K关注 0票数 2

我有多个拖拽列表连接到多个拖放区域,但需要限制哪些项目可以拖动基于应用程序中已经设置的变量。例如,如果我有以下内容:

代码语言:javascript
复制
this.maxVirtuePts = 10;
this.reqSocialStatus = false;
this.allowedTheGift = true;
this.maxHermeticMajorVirtue = 1;

对于maxVirtuePts,如何将drop区域中的项目数量限制为10?对于reqSocialStatus,如何检查放置区域中是否至少存在一个项目?对于allowedTheGift,如何检查拖放项目的名称是否包含特定文本?对于maxHermeticMajorVirtue,如何检查从特定列表中删除的项目是否已经存在,以避免添加来自同一来源列表的其他项目?

如果任何人能就如何有效地使用cdkDropListEnterPredicate提出建议或提供示例,将不胜感激。

增加了一个StackBlitz:https://stackblitz.com/edit/angular-flpx5t

EN

回答 2

Stack Overflow用户

发布于 2020-01-11 17:50:23

在drop函数中,您可以检查任何您想要的条件,如果条件不满足,只需调用return,这将停止将项目放入区域

例如

代码语言:javascript
复制
drop(event: CdkDragDrop<string[]>) {
    if(event.container.data.length>9){
     return // this will stop item from drop
    }
    if (event.previousContainer === event.container) {
      moveItemInArray(
        event.container.data,
        event.previousIndex,
        event.currentIndex
      );
    } else {
      transferArrayItem(
        event.previousContainer.data,
        event.container.data,
        event.previousIndex,
        event.currentIndex
      );
    }
  }
票数 0
EN

Stack Overflow用户

发布于 2020-01-15 04:14:47

我最终使用了cdkDropListEnterPredicate,但只有最后的检查会阻止更多的项目被传输。为了进行最终检查,我将其他条件作为变量进行了计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59692708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档