2017-09-28 41 views
0

我试图使用Observable来监视元素的clientX。 这样的:如何在angular2中使用clientX?

`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'; 
    })` 

,但我得到了.map(m => ({ x: m.event.clientX , y:m.clientY }))

一个错误说Property 'event' does not exist on type '{}'

,我怎么能解决这个问题?

+0

我尝试添加注释作为通用参数但不起作用 –

回答

0

你需要下面的行

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

改变这种

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

这只是一个简单的拼写错误。

+0

我确实发现自己写的事件少了,但是我发现仍然需要向'M'添加类型声明。谢谢 –