この例を で実行したいと思いrxjs5
ます。しかし、うまくいきません。私は#41 行で立ち往生しています。マップが返さSubject
れ、メソッドがありません.takeUntil
。それを実装する最良の方法は何ですか?ありがとう
質問する
462 次
2 に答える
2
あなたの例は本当に古いtoRx()
です。廃止され、ずっと前に削除されたようなものを使用しています。この例では EventEmitters も使用しており、それらをサブスクライブしていますが、それを行うべきではありません。また、DOM を使用して値を設定しているため、これもnativeElement
行うべきではありません。
そのため、例を少し変更しました
- EventEmitter を削除し、Subject に置き換えました
- 削除されまし
toRx()
た。もう必要ありません - Renderer を使用して要素の
cursor
とを設定しました。position
これは、コードがどのように見えるかの小さなスニペットです。それほど違いはありません。
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));
}
これが完全な例です。
于 2016-03-20T13:37:06.403 に答える
0
あなたのレポから、古いバージョンの を使用しているようですAngular2 packages
。
しかし、これを試してみてもいいですし、Eric Martinezがすばらしい動作デモを提供してくれています。
'rxjs/Rx' をインポートします。
于 2016-03-20T13:41:22.667 に答える