Angular 4 - 将事件转换为可观察的流
我对Rxjs和Angular 4相当陌生,无法让我的脑袋知道如何做到这一点。Angular 4 - 将事件转换为可观察的流
模板:
<div class="btn-group cp">
<input [colorPicker]="bgColor"
(colorPickerChange)="colorChanged()"
[style.background]="bgColor">
</div>
colorChanged()获取上鼠标移动称为由colorPickerChnage。我想在我的组件是这样的:
colorChanged$.subscribe(data => console.log(data))
(它会产生一定的反跳和更多的用户,这就是为什么我希望把它作为一个观察的。)
我解决它。
模板:
<div class="btn-group cp">
<input [colorPicker]="bgColor"
(colorPickerChange)="colorChanged(bgColor)"
[style.background]="bgColor">
</div>
然后在组件:
import { Subject } from 'rxjs';
colorChanged$ = new Subject<string>();
colorChanged(bgColor) {
this.colorChanged$.next(bgColor)
}
ngOnInit() {
this.colorChanged$.subscribe(v => console.log(v));
}
虽然这有效,但事实证明这不是“Rx”的做法。阅读Ben Lesh的文章:[关于主题的主题(在RxJS中)](https://medium.com/@benlesh/on-the-subject-of-subjects-in-rxjs-2b08b7198b93) – wood1y
也许你可以使用Observable.fromEvent(event.target,'event type') 看看这个 - [link](https://www.learnrxjs.io/operators/creation/fromevent.html) – Awadhoot
event.target会是什么在这种情况下,你如何将fromEvent连接到colorPickerChange? fromEvent示例仅显示最基本的用例,文档上的点击事件以及依赖DOM事件不是“角度”方式。 –
您可以订阅'EventEmitter'和无论从功能发出自身或使用类似'HostListener'为'你的组件的mousemove事件。 – Dylan