- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 rxjs 中找到了一些使用 debounce 和 distinctUntilChanged 的教程。如何在 Angular 6 中实现它?
教程代码是这样的:
var observable = Rx.Observable.fromEvent(input,'input');
observable.map(event=>event.target.value)
.debounceTime(2000)
.subscribe({
next:function(value){
console.log(value)
}
}
这是我的代码:
在 html 中,我有这个:
<input class="form-control" [(ngModel)]="userQuestion" type="text" name="userQuestion" id="userQuestions">
在 typescript 中,我有这个:
import { Subject,Observable } from "rxjs";
import { debounceTime,distinctUntilChanged } from "rxjs/operators";
ngOnInit() {
// initialization
this.userQuestion = new Observable;
this.userQuestion.pipe(
debounceTime(2000)).subscribe(val => {
console.log(val)
}
)
}
它不起作用。我怎样才能让它发挥作用?
最佳答案
需要注意的两点:
在 typescript 中,您没有正确初始化 Observable。如果您想基于 DOM 事件(例如“input”)生成一个 Observable,您应该使用“fromEvent”便捷方法
其次,pipe
只是用来环绕任何运算符。因此,不应在 pipe
如果您使用@ViewChild,则必须在 ngAfterViewInit 中创建 Observable。在此之前将无法访问 ViewChild。
在你的模板中
<input #questionInput class="form-control" [(ngModel)]="userQuestion" type="text" name="userQuestion" id="userQuestions">
在 .ts 中
@ViewChild('questionInput') questionInput: ElementRef;
public input$: Observable<string>;
////
...code...
////
ngAfterViewInit() {
this.input$ = fromEvent(this.questionInput.nativeElement, 'input');
.pipe(
debounceTime(2000),
map((e: KeyboardEvent) => e.target['value'])
);
this.input$.subscribe((val: string) => {
console.log(val)
});
}
关于angular - Angular 6 中的 debounceTime 和 distinctUntilChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530169/
在rxjs流中,我将distinctUntilChanged与lodash的isEqual一起使用,以过滤出重复的值。但是,它似乎无法正常工作。采取以下代码片段 import { isEqual }
对于 rxjs,我可以在使用 distinctUntilChanged 时提供初始值吗?当没有收到以前的值时,似乎完全跳过了等于检查。当它收到的第一个值是初始值时,我不想发出任何内容。 用例 就我而言
如何让 distinctUntilChanged 处理这样的对象 myObs = Observable.from([{foo: 'bar'}, {foo: 'bar'}]); myObs.distin
我开始使用 RxJs(使用 v5 测试版),但不知何故我无法弄清楚如何使用 distinctUntilChanged .如果我在 babel-node 中运行它,下面代码的输出是 [ 'a', 1 ]
你们能告诉我这里出了什么问题吗? RxJS Jsfiddle Demo 我原以为该值只会打印一次,但它打印了多次 function Search(sel) { let observable =
我有一个值流,我使用下限和上限来限制,为了减少日志记录量,我只想在值发生变化时发出它们。问题是以下代码段中的第二个 distinctUntilChanged() 仍然会产生重复项: Observabl
情况 我想知道是否可以重置 distinctUntilChanged 部分以便它重新接受重复的值。 所以我的情况是,现在我正在使用这样的函数(作为示例大大缩短)。 Rx.Observable.
我正在尝试使用 .distinctUntilChanged() 并且它在第一次后没有将值传递给 switchmap()。 RxTextView.textChanges(etUserQuery).deb
设置:RxSwift 4.2 Swift 4.1 Xcode 9.4.1 我目前正在使用 distinctUntilChanged 来获取唯一值。但就我而言,它仅适用于“排序”值。 例如这里: fun
我有一个对象流,我需要比较当前对象是否与前一个对象不同,在这种情况下会发出一个新值。我发现 distinctUntilChanged 运算符应该完全按照我的意愿行事,但出于某种原因,除了第一个之外,它
让我们考虑一下下面的代码 Rx.Observable.merge( Rx.Observable.just(1), Rx.Observable.just(1).delay(1000) ).dis
我有一个可观察的流设置如下。我有一个间隔,每两秒轮询一次。然后我 switchMap 进行两个相关的 API 调用(这里用 'of's 模拟)。之后,我想使用 distinctUntilChanged
我想在我的异步验证器中添加 debounceTime 和 distinctUntilChanged。 mockAsyncValidator(): AsyncValidatorFn { retu
我正在包装一些 API 调用来假装套接字结果 - 以几秒的间隔循环调用并在更改时发出结果。 使用 DistinctUntilChanged() 运算符时效果很好。但是,当结果是列表时,运算符始终发出结
我有一个连续发出项目的可观察对象,我需要处理每个项目(处理函数需要一些时间)。因此,同时在处理一个项目时,如果另一个项目发出相同的值,我可以忽略它,因为同样的事情已经在进行中。但是一旦当前项目被处理(
阅读 How to use RxJs distinctUntilChanged?和 this ,似乎 distinctUntilChanged 将输出流更改为仅提供不同的连续值。 我的意思是,如果相同
我是 Rxjs 新手我正在尝试了解 BehaviourSubject下面是我的代码 export interface State { items: Items[] } const defaul
当我出于某种原因在表单输入上按下一个键时,异步验证器没有检测到 distinctUntilChanged,它仍然发送 API 请求。例如,如果我按 35,删除 5,然后再次添加 5,它仍然会发送请求。
我有一个返回可观察值的方法,如下所示 constructor(private _http: HttpClient) {} getUsers(location){ return this._htt
令 orders$ 是如下所示的 RxJs 对象序列。我们使用 distinctUntilChanged() 监听更改,并根据更改的键采取不同的操作。我们能否在 tap() 内部知道哪个对象键实际发生
我是一名优秀的程序员,十分优秀!