angular - ng2-Dragula 和 Angular5 - Copy 有效,copySortSource 不能可靠地工作
问题描述
我正在使用 Angular5 和 ng2-Dragula。我有两个名为“parameterBag”的 Dragula 容器(每个都在自己的组件中定义)。我可以在两个容器之间成功复制项目(如果它们不存在于目标中)。我原来的帖子说,
然而,我不能做的是在同一个容器中移动项目。
自从原始帖子以来,我发现了一个名为 copySortSource 的选项,如果将其设置为 true,则允许对复制源容器中的元素进行重新排序。我已经相应地更新了我的代码并删除了移动选项。现在我有时可以在容器内重新排序(移动)。有时物品在重新排序后会重复,有时其他物品会从容器中消失!
HTML 数据编辑器组件
<ul dragula="parameterBag" [(dragulaModel)]="items" id="dataEditor" style="list-style-type:none;">
<li *ngFor="let item of items">
{{item}}
</li>
</ul>
data-editor.component.ts 构造函数
constructor(private dragulaService: DragulaService, private patientService: PatientService) {
this.subs.add(this.dragulaService.drop(PARAMETER_BAG)
.subscribe(({ name, el, target, source, sibling }) => {
console.log('drop');
if (target && target.id === DATA_EDITOR) {
this.editing.emit(true);
}
})
);
}
数据编辑器.component.ts ngOnInit
ngOnInit() {
let group = this.dragulaService.find(PARAMETER_BAG);
if (group === undefined) {
this.dragulaService.createGroup(PARAMETER_BAG, {
copySortSource: true,
copy: (el, source) => {
return true;
},
copyItem: (parameter: String) => {
// new to create a new copied item
if (this.targetId === TEMPLATE_PARAMETERS) {
let exists = this.templateData.some(p => (p === parameter));
if (!exists) {
return parameter;
}
return null; //prevent copy since parameter already exists
}
else {
// only allow patient to accept if it doesn't already exist
let exists = this.items.some(p => (p === parameter));
if (!exists) {
return parameter;
}
return null; //prevent copy since parameter already exists
}
},
accepts: (el, target, source, sibling) => {
this.targetId = target.id;
return true;
}
});
}
HTML 模板参数组件
<ul dragula="parameterBag" [(dragulaModel)]="templateData" id="templateParameters" style="list-style-type:none;">
<li *ngFor="let item of templateData">
{{item}}
</li>
</ul>
解决方案
推荐阅读
- r - 如何分别使用 TermDocumentMatrix() 和 DocumentTermMatrix() 解决数据丢失和错误?
- amazon-web-services - 具有组织帐户的 ECS 中的按需实例,无法从 ECR 中提取 docker 映像
- reactjs - 如何使用 `console.log` 来调试我的代码?
- node.js - 结合 Typescript Koa-Router 和 Passport
- fortran - iand 使用新的 gfortran 版本具有不同类型的参数
- c# - 为经过身份验证的用户保持 DNN 页面未经身份验证,以用于输出缓存
- pandas - 将一个大的 csv 文件读入数据框
- java - 在java中运行命令的问题
- javascript - 检测是否在 javascript 中使用不受信任的 SSL 证书加载网页
- sql - 将 SQL 普通密码字段转换为 Laravel 哈希密码