如何搜索/过滤类型字符串数组的可观察性?
例如,我有以下可观察的
names$ = Observable.of(['Lenovo','Dell','Toshiba','Apple','Microsoft']);
现在,我想根据用户在输入文本框中输入的内容来过滤这个可观察的内容。
所以我有以下代码
请注意,我正在寻找客户端解决方案。我已经有了客户端的数据
我还尝试了flatmap操作符来展平数组,但最终还是无法返回字符串数组类型的可观察值。
任何帮助都将不胜感激。提前谢谢。
应用程序。组成部分html
<!-- Textbox to receive user input -->
Search:<input type='text' [(ngModel)]='searchTerm' (keypress)='onkeypress($event.target.value)'>
<p>Search Term: {{searchTerm}}</p>
<hr>
<!-- Show search results here as ordered list -->
<ng-container *ngIf='(names$|async)?.length>0'>
<ol>
<li *ngFor='let name of names$|async'>
{{name}}
</li>
</ol>
</ng-container>
一个pp.component.ts
import {Component, OnInit} from '@angular/core';
import {Observable} from 'rxjs';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
names$: Observable<string[]>;
filteredNames$: Observable<string[]>;
searchTerm: string;
ngOnInit() {
this.names$ = Observable.of(['Lenovo', 'Dell', 'Toshiba', 'Apple', 'Microsoft']);
}
// HOW TO IMPLEMENT THIS FUNCTION ??
onkeypress(value) {
console.log(value);
this.names$ = this.names$.map(names => names.indexOf(value) > 0)
// .filter(x=>{console.log(x.indexOf(value));return x.indexOf(value)>0})
// .subscribe(
// (data)=>console.log(data), (error)=>console.log('Error'+error),
// ()=>console.log('complete'));
}
}
试试这个
let value='Del'
Rx.Observable.from(['Lenovo','Dell','Toshiba','Apple','Microsoft'])
.filter(name=>name.indexOf(value)!==-1)
.subscribe(console.log);
你在这里犯了一些错误。
>
如果您希望在用户键入(onkeyup)时更改名称
列表,为什么要再次将this.names$
重新分配回this.names$
?这将使您的代码工作一次,又名工作在第一个击键。您应该有两个变量,一个用于保存值,另一个绑定到您的ngModel
。
如果要使用async
pipe,则无需订阅typescript文件中的observable。
在ngOnInit()
中,创建一个变量以跟踪您的姓名:
ngOnInit() {
this.data$ = Observable.of(['Lenovo', 'Dell', 'Toshiba', 'Apple', 'Microsoft']);
this.names$ = this.data$;
}
假设您使用的是async
管道,这应该是您的onKeyUp
函数:
onKeyUp(value) {
this.names$ = this.data$
.map(x => {
return x.filter(y=>y.toLowerCase().indexOf(value.toLowerCase())>-1);
})
}
工作堆叶盘:https://stackblitz.com/edit/angular-yeaer6
本文向大家介绍system.reactive 过滤可观察值,包括了system.reactive 过滤可观察值的使用技巧和注意事项,需要的朋友参考一下 示例
我对Observables和RxJs是新手,我想对回报进行调整。如果第一个选择器返回某个值,我希望第二个选择器可以观察到。但是如果第一个选择器没有返回那个特定的值,我想返回false,而不是(false)。我已经走了这么远,但这返回了一个可观察的结果
问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首
问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可
此外,为什么Viewmodel不能观察到它自己的LiveData的变化?
我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成