Ich werde einen ziehbaren vertikalen Balken mit Angular2 erstellen. isDragging
sollte auf "true" gesetzt werden, wenn der Benutzer darauf klickt, dann sollte moveHandler
aufgerufen werden, wenn sich die Maus bewegt. Alles scheint einfach, aber:Weird Event-Handler-Verhalten in Angular2?
- Wenn die if-Kond in
ngOnInit
ist wahr, wird "Ziehen" nie gedruckt. - Wenn die if-cond in
ngOnInt
wenn falsch ist, wird "Ziehen" gedruckt, nachdem die Maus hoch ist.
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'my-app',
template: ` <div id="handler_vertical" (mousedown)="startDragging()"></div> `
})
export class AppComponent implements OnInit {
isDragging = false;
width = 0;
startDragging() {
console.log("start dragging");
this.isDragging = true;
}
dragHanlder(event: MouseEvent) {
if (this.isDragging) {
console.log("dragging");
this.width -= event.movementX;
// console.log("movementX:"+ event.movementX);
}
}
stopDragging() {
console.log("stop dragging");
this.isDragging = false;
}
ngOnInit() {
window.onmouseup = this.stopDragging;
if(false){
window.onmousemove = this.dragHanlder;
}else{
window.onmousemove = (event) => {
console.log("moving");
this.dragHanlder(event);
}
}
}
}
Dank. Aber "Ziehen" wird immer noch gedruckt, nachdem die Maus hochgefahren ist. Hast du irgendeine Idee? – Zen
Es ist der gleiche Grund. Ich habe Plunkr aktualisiert – yurzui