2017-09-28 1 views
0

J'ai essayé d'utiliser l'Observable pour surveiller le clientX de l'élément. comme ceci:comment utiliser clientX dans angular2?

`const wrap = document.getElementById('wrap'); 
const body = document.body; 

const mouseDown = Observable.fromEvent(wrap, 'mousedown'); 
const mouseUp = Observable.fromEvent(body, 'mouseup'); 
const mouseMove = Observable.fromEvent(body, 'mousemove'); 

mouseDown 
    .map(event => mouseMove.takeUntil(mouseUp)) 
    .concatAll() 
    .map(m => ({ x: m.event.clientX , y:m.clientY })) 
    .subscribe(pos => { 
    wrap.style.left = pos.x + 'px'; 
    wrap.style.top = pos.y + 'px'; 
    })` 

mais je suis une erreur dans .map(m => ({ x: m.event.clientX , y:m.clientY }))

dit Property 'event' does not exist on type '{}'

comment pourrais-je résoudre ce problème?

+0

J'essaie d'ajouter une annotation en tant que param générique mais ne fonctionne pas –

Répondre

0

Vous devez modifier la ligne suivante

.map(m => ({ x: m.event.clientX , y:m.clientY })) 

à cette

.map(m => ({ x: m.clientX , y:m.clientY })) 

Il est juste une simple faute de frappe.

+0

Je me suis retrouvé à écrire moins d'événement, mais j'ai trouvé encore besoin d'ajouter une déclaration de type à 'M'.Merci –