Angular material 角度拖放:拖放后不应从容器中移除项目
我使用的是角度拖放CDK: 我能够将物品从一个容器拖放到另一个容器,反之亦然。现在,我试图不从容器中删除掉的项目,但它应该掉到另一个容器中 正如您在图片中看到的,我想将一个项目从'to do'容器拖动到'Done'容器中 我想在掉落后保留一件物品 示例:Angular material 角度拖放:拖放后不应从容器中移除项目,angular-material,angulardraganddroplists,Angular Material,Angulardraganddroplists,我使用的是角度拖放CDK: 我能够将物品从一个容器拖放到另一个容器,反之亦然。现在,我试图不从容器中删除掉的项目,但它应该掉到另一个容器中 正如您在图片中看到的,我想将一个项目从'to do'容器拖动到'Done'容器中 我想在掉落后保留一件物品 示例: 任何帮助,请…我认为使用棱角材料是不可能的。这里有一个可能的解决方案 <div class="example-box" *ngFor="let item of todo" cdkDrag>{{item}} <span (cl
任何帮助,请…我认为使用棱角材料是不可能的。这里有一个可能的解决方案
<div class="example-box" *ngFor="let item of todo" cdkDrag>{{item}} <span (click)="copyMe(item)">Copy</span> </div>
Stackblitz:我认为使用棱角材料是不可能的。这里有一个可能的解决方案
<div class="example-box" *ngFor="let item of todo" cdkDrag>{{item}} <span (click)="copyMe(item)">Copy</span> </div>
Stackblitz:这很容易。只需使用copyArrayItem而不是transferArrayItem
import {
CdkDragDrop,
copyArrayItem,
moveItemInArray
} from '@angular/cdk/drag-drop';
drop(event: CdkDragDrop<string[]>) {
if (event.previousContainer === event.container) {
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
} else {
copyArrayItem(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);
}
}
导入{
CdkDragDrop,
copyArrayItem,
moveItemInArray
}来自“@angular/cdk/拖放”;
drop(事件:CdkDragDrop){
if(event.previousContainer==event.container){
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
}否则{
复制阵列项目(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);
}
}
这很容易。只需使用copyArrayItem而不是transferArrayItem
import {
CdkDragDrop,
copyArrayItem,
moveItemInArray
} from '@angular/cdk/drag-drop';
drop(event: CdkDragDrop<string[]>) {
if (event.previousContainer === event.container) {
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
} else {
copyArrayItem(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);
}
}
导入{
CdkDragDrop,
copyArrayItem,
moveItemInArray
}来自“@angular/cdk/拖放”;
drop(事件:CdkDragDrop){
if(event.previousContainer==event.container){
moveItemInArray(
event.container.data,
event.previousIndex,
event.currentIndex
);
}否则{
复制阵列项目(
event.previousContainer.data,
event.container.data,
event.previousIndex,
event.currentIndex
);
}
}
使用copyArrayItem
而不是transferArrayItem
更改: 到
使用
copyArrayItem
而不是transferArrayItem
更改: 到
我认为用angulat材料是不可能的。你应该先复制一个你想移动的元素,然后再通过angulat材质移动我认为不可能的元素。您应该首先复制要移动的元素,然后移动副本谢谢您的回答!。我在寻找更好的方法。我不想复制项目。我只是简单地拖放,没有从容器中删除项目“要做”。谢谢你的回答!。我在寻找更好的方法。我不想复制项目。我只是简单地拖放,而不从容器“To do”中删除项目。有没有一种方法可以做到这一点,同时在拖动预览时保持原稿在原处?就像现在一样,你抓取它,它会从原始列表中临时删除,然后你将其删除,并添加到两个列表中。有没有办法防止它被临时删除?@user973223正在寻找相同的解决方案,是否有任何更新?有没有办法在拖动预览的同时保持原稿在原处?就像现在一样,你抓取它,它会从原始列表中临时删除,然后你将其删除,并添加到两个列表中。有没有办法防止它被临时删除?@user973223正在寻找相同的解决方案,是否有任何更新?
copyArrayItem(
event.previousContainer.data,
event.container.data,
event.previousIndex,
toIndex
);