【发布时间】:2016-03-20 13:06:52
【问题描述】:
我想用rxjs5 运行this example。但它不起作用。我一直坚持#41 line。它说 map 返回 Subject 并且它没有 .takeUntil 方法。实施它的最佳方法是什么?谢谢
【问题讨论】:
-
你用的是哪个版本?
-
@micronyks 这是 5.0.0-beta.2
我想用rxjs5 运行this example。但它不起作用。我一直坚持#41 line。它说 map 返回 Subject 并且它没有 .takeUntil 方法。实施它的最佳方法是什么?谢谢
【问题讨论】:
您的示例确实很旧,它使用了诸如 toRx() 之类的东西,这些东西很久以前就被弃用和删除了。该示例还使用了 EventEmitters 并订阅了它们,我们 should't do that 还使用 nativeElement 和我们 shouldn't do that either 为 DOM 设置值。
所以我稍微修改了这个例子
toRx(),不再需要cursor和position。这是代码现在的样子的小sn-p,并没有那么不同。
constructor(public element: ElementRef, public renderer: Renderer) {
this.renderer.setElementStyle(element.nativeElement, 'position', 'relative');
this.renderer.setElementStyle(element.nativeElement, 'cursor', 'pointer');
this.mousedrag = this.mousedown.map(event => {
event.preventDefault();
return {
left: event.clientX - this.element.nativeElement.getBoundingClientRect().left,
top: event.clientY - this.element.nativeElement.getBoundingClientRect().top
};
})
.flatMap(imageOffset => this.mousemove.map(pos => ({
top: pos.clientY - imageOffset.top,
left: pos.clientX - imageOffset.left
}))
.takeUntil(this.mouseup));
}
full example 正在运行。
【讨论】:
从您的仓库看来,您使用的是旧版本的Angular2 packages。
但是你可以试试这个,或者 Eric Martinez 为你提供了精彩的工作演示。
导入'rxjs/Rx';
【讨论】: