Angular6實現(xiàn)拖拽功能指令drag實例詳解
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; // 記錄鼠標點擊事件的位置 X public disY; // 記錄鼠標點擊事件的位置 Y private totalOffsetX = 0; // 記錄總偏移量 X軸 private totalOffsetY = 0; // 記錄總偏移量 Y軸 // 點擊事件 @HostListener('mousedown', ['$event']) onMousedown(event) { this.isDown = true; this.disX = event.clientX; this.disY = event.clientY; } // 監(jiān)聽document移動事件事件 @HostListener('document:mousemove', ['$event']) onMousemove(event) { // 判斷該元素是否被點擊了。 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)聽document離開事件 @HostListener('document:mouseup', ['$event']) onMouseup(event) { // 只用當元素移動過了,離開函數(shù)體才會觸發(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中注冊,在declarations
數(shù)組中添加指令。
然后在要拖拽的組件上,添加指令 appDrag
,即可實現(xiàn)拖拽功能。
以上就是Angular6實現(xiàn)拖拽功能指令drag實例詳解的詳細內(nèi)容,更多關(guān)于Angular6拖拽功能指令drag的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Angular.js?實現(xiàn)帶手柄自由調(diào)整頁面大小的功能
這篇文章主要介紹了Angular.js?實現(xiàn)帶手柄自由調(diào)整頁面大小的功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-12-12AngularJs bootstrap搭載前臺框架——準備工作
本文主要介紹AngularJs bootstrap搭載前臺框架,這里對Bootstrap 搭載環(huán)境,及注意事項做了講解,有需要的小伙伴可以參考下2016-09-09對比分析AngularJS中的$http.post與jQuery.post的區(qū)別
這篇文章主要給大家對比分析AngularJS中的$http.post與jQuery.post的區(qū)別,十分的詳細,是篇非常不錯的文章,這里推薦給小伙伴們。2015-02-02AngularJS實現(xiàn)的輸入框字數(shù)限制提醒功能示例
這篇文章主要介紹了AngularJS實現(xiàn)的輸入框字數(shù)限制提醒功能,涉及AngularJS事件監(jiān)聽與元素屬性動態(tài)操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-10-10總結(jié)AngularJS開發(fā)者最常犯的十個錯誤
AngularJS是如今最受歡迎的JS框架之一,簡化開發(fā)過程是它的目標之一,這使得它非常適合于元型較小的apps的開發(fā),但也擴展到具有全部特征的客戶端應(yīng)用的開發(fā)。下面給大家總結(jié)了AngularJS開發(fā)者最常犯的十個錯誤,有需要的可以參考學習下。2016-08-08