I came here after some time to solve a similar problem using ng2-dragula for angular2.
dragulaService.setOptions('wallet-bag', { removeOnSpill: (el: Element, source: Element): boolean => { return source.id === 'wallet'; }, copySortSource: false, copy: (el: Element, source: Element): boolean => { return source.id !== 'wallet'; }, accepts: (el: Element, target: Element, source: Element, sibling: Element): boolean => { return !el.contains(target) && target.id === 'wallet'; } });
I have 4 divs that can be dragged into one that has the wallet identifier. They are all part of the wallet-bag using this code, they can all be copied to the wallet, not copied to each other, and you can remove them from the wallet using spill but not from others.
I am posting my solution as it can help someone.
source share