Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解
1. 指令代碼
import { Directive, ElementRef, OnInit, HostListener } from '@angular/core';
@Directive({
selector: '[appDrag]'
})
export class DragDirective implements OnInit {
constructor(public el: ElementRef) {
}
public isDown = false;
public disX; // 記錄鼠標(biāo)點(diǎn)擊事件的位置 X
public disY; // 記錄鼠標(biāo)點(diǎn)擊事件的位置 Y
private totalOffsetX = 0; // 記錄總偏移量 X軸
private totalOffsetY = 0; // 記錄總偏移量 Y軸
// 點(diǎn)擊事件
@HostListener('mousedown', ['$event']) onMousedown(event) {
this.isDown = true;
this.disX = event.clientX;
this.disY = event.clientY;
}
// 監(jiān)聽(tīng)document移動(dòng)事件事件
@HostListener('document:mousemove', ['$event']) onMousemove(event) {
// 判斷該元素是否被點(diǎn)擊了。
if (this.isDown) {
this.el.nativeElement.style.left = this.totalOffsetX + event.clientX - this.disX + 'px';
this.el.nativeElement.style.top = this.totalOffsetY + event.clientY - this.disY + 'px';
}
}
// 監(jiān)聽(tīng)document離開(kāi)事件
@HostListener('document:mouseup', ['$event']) onMouseup(event) {
// 只用當(dāng)元素移動(dòng)過(guò)了,離開(kāi)函數(shù)體才會(huì)觸發(fā)。
if (this.isDown) {
console.log('fail');
this.totalOffsetX += event.clientX - this.disX;
this.totalOffsetY += event.clientY - this.disY;
this.isDown = false;
}
}
ngOnInit() {
this.el.nativeElement.style.position = 'relative';
}
}2.使用
首先將指令在Module中注冊(cè),在declarations數(shù)組中添加指令。
然后在要拖拽的組件上,添加指令 appDrag ,即可實(shí)現(xiàn)拖拽功能。
以上就是Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Angular6拖拽功能指令drag的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
AngularJs IE Compatibility 兼容老版本IE
本文主要介紹AngularJs IE Compatibility 兼容老版本IE的問(wèn)題及解決辦法,有興趣的小伙伴可以參考下2016-09-09
angularjs實(shí)現(xiàn)分頁(yè)和搜索功能
這篇文章主要介紹了angularjs實(shí)現(xiàn)分頁(yè)和搜索功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
詳解Angular.js的$q.defer()服務(wù)異步處理
相信大家都知道jquery和angular都有defer服務(wù),這篇文章暫以angular為例談?wù)剛€(gè)人的理解,在文章的最后并附上jquery的阮一峰總結(jié)的defer。有需要的朋友們也可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11
Angular2仿照微信UI實(shí)現(xiàn)9張圖片上傳和預(yù)覽的示例代碼
本篇文章主要介紹了Angular2仿照微信UI實(shí)現(xiàn)9張圖片上傳和預(yù)覽的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
Angularjs實(shí)現(xiàn)數(shù)組隨機(jī)排序的方法
今天小編就為大家分享一篇Angularjs實(shí)現(xiàn)數(shù)組隨機(jī)排序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Angular項(xiàng)目里ngsw-config.json文件作用詳解
這篇文章主要為大家介紹了Angular項(xiàng)目里ngsw-config.json文件作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

