我正在使用ng2-dragula开发Angular应用。
如果要在键盘上按下“ Ctrl”键,我想制作一个可拖动的副本项目。
在拖动过程中是否有处理Ctrl键的好方法?
我已经尝试过这种方法:
public constructor(private dragulaService: DragulaService,
private renderer2: Renderer2) {
this.keydownListener = this.renderer2.listen('body', 'keydown', (keyboard: KeyboardEvent) => {
this.isCtrlPressed = keyboard.ctrlKey;
});
this.keydownListener = this.renderer2.listen('body', 'keyup', (keyboard: KeyboardEvent) => {
this.isCtrlPressed = keyboard.ctrlKey;
});
public ngOnInit(): void {
this.dragulaService.drag.asObservable().pipe(
takeUntil(this.destroy))
.subscribe((x) => {
if (this.isCtrlPressed) {
// do something
}
// do something else }
但是如果按下“ Ctrl”键,则拖动根本无法进行。
如果我(作为实验)将“ Ctrl”替换为“ Shift”或“ Alt”,则可以,但是非常慢。
有什么想法吗?
UPD:我还尝试了使用angular的'@HostListener'和rxjs的'fromEvent'的方法,在所有情况下,这都像是幻灯片放映。
UPD2:速度减慢的问题我已将键盘侦听器移至通用控件并通过服务传递结果来解决。处理“ ctrl”键的问题仍然是一个问题。
UPD3::我已移至Angular material Drag and Drop:/