Angular fromEvent()未触发ViewChild上的observable?
我在app.component.html中有以下内容 并调整我的obervable声明如下:Angular fromEvent()未触发ViewChild上的observable?,angular,rxjs6,Angular,Rxjs6,我在app.component.html中有以下内容 并调整我的obervable声明如下:const observable=fromEvent(this.myInput.nativeElement,'input') 我可以看到,在viewChild中,我传递的是输入的原生html元素,而不是整个文档,该文档应该根据文档工作: fromEvent接受作为第一个参数的事件目标,它是一个具有注册事件处理程序函数的方法的对象 所以我不确定为什么在这种情况下,可观察的东西不能创造。有什么想法吗 编辑遵
const observable=fromEvent(this.myInput.nativeElement,'input')代码>
我可以看到,在viewChild中,我传递的是输入的原生html元素,而不是整个文档,该文档应该根据文档工作:
fromEvent接受作为第一个参数的事件目标,它是一个具有注册事件处理程序函数的方法的对象
所以我不确定为什么在这种情况下,可观察的东西不能创造。有什么想法吗
编辑遵循@bryan60的示例并重构我自己的代码,我注意到了一些东西
在使可观察到后立即订阅具有预期行为:
const observable = fromEvent(this.myInput.nativeElement, 'input').pipe(
map(<InputEvent>(eventInfo) => eventInfo.target.value),
debounceTime(500),
distinctUntilChanged()
).subscribe(
(evt) => console.log(evt)
);
const observable=fromEvent(this.myInput.nativeElement,'input').pipe(
映射((eventInfo)=>eventInfo.target.value),
去BounceTime(500),
distinctUntilChanged()
).订阅(
(evt)=>console.log(evt)
);
但将其存储为var并在之后订阅不会:
let observable = fromEvent(this.myInput.nativeElement, 'input').pipe(
map(<InputEvent>(eventInfo) => eventInfo.target.value),
debounceTime(500),
distinctUntilChanged()
);
this.subscription = observable.subscribe(
(evt) => console.log(evt)
);
let observable=fromEvent(this.myInput.nativeElement,'input').pipe(
映射((eventInfo)=>eventInfo.target.value),
去BounceTime(500),
distinctUntilChanged()
);
this.subscription=observable.subscripte(
(evt)=>console.log(evt)
);
我仍然不知道为什么会这样。代码按预期工作:也就是说。。。对于输入值的变化,还有很多其他的反应方式,它们都是更“角度”的方法(反应形式的值变化,ngModel on change)。我根据您的例子编辑了我的问题。这似乎是把它分解成一个可观察的声明,然后订阅失败了@布莱恩:不知道。仍然无法在stackblitz中重新创建。保存一个变量对我来说仍然有效。我想知道这是否只是一个版本问题。我使用的是Angular 6和rxjs6。不确定。在如何调用函数来构建可观察对象方面,看起来更像是一个逻辑错误,或者您可能以某种方式破坏了引用
@ViewChild('inp') myInput: ElementRef;
const observable = fromEvent(this.myInput.nativeElement, 'input').pipe(
map(<InputEvent>(eventInfo) => eventInfo.target.value),
debounceTime(500),
distinctUntilChanged()
).subscribe(
(evt) => console.log(evt)
);
let observable = fromEvent(this.myInput.nativeElement, 'input').pipe(
map(<InputEvent>(eventInfo) => eventInfo.target.value),
debounceTime(500),
distinctUntilChanged()
);
this.subscription = observable.subscribe(
(evt) => console.log(evt)
);