- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Typescript 学习 Angular 5。我正在尝试实现一个 Angular Material 自动完成功能,我发现以下代码对我来说非常晦涩:
this.filteredStates = this.stateCtrl.valueChanges
.pipe(
startWith(''),
map(state => state ? this.filterStates(state) : this.states.slice())
);
完整代码可以在这里找到:https://stackblitz.com/angular/mdokmnyajmd?file=app%2Fautocomplete-overview-example.ts
我倾向于认为,当 stateCtrl 发生变化时,当且仅当在自动完成中选择了具体元素时,它才会返回 filterStates(state) 结果。
我不明白的是 startWith('') 的用法?!为什么不简化对 valueChanges 的调用订阅?
最佳答案
valueChanges
最初不会发出任何值(直到状态实际改变)。当您需要从初始状态计算某些内容时,您可以使用 startWith
使 observable 发出一个值,即使它通常不会发出。
如果你想在没有startWith
的情况下处理初始值,你可以创建另一个流
Observable.of(stateCtrl.value).pipe(
map(state => state ? this.filterStates(state) : this.states.slice())
);
它只会发出一个值。但是同时处理这两种情况更容易,所以 startWith
是一个很好的方法......
关于angular - startWith ('' ) typescript 代码有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48465361/
我试图匹配文件前缀是否与我的对象匹配,但我遇到了类转换异常 for (int i=0;i ,但在运行时它实际上包含一个 java.lang.Boolean 。由于泛型的实现方式(称为 "erasur
我有 Observable 发出一些 String: List list = // size this list is 5 Observable o1 = Observable.fromArray(l
我尝试运行 jquery 但没有成功: $(function () { var pathname = window.location.pathname; var a = path
我正在尝试使用 startWith 过滤器,但它没有正确过滤数据,就像 P 的情况一样。让我知道我在这里做错了什么。 Controller 代码 - var app = angular.module(
我对Kotlin不满意(尽管我在Java等其他语言方面有很多经验)。我试图用Kotlin编写一些代码,但不明白为什么以下代码无法编译。 private fun test(inpStr : String
自从更新到 RXJS 第 6 版后,我的 WebStorm 编辑器一直在提示 startWith() 的某些用法。该运算符被标记为已弃用。 您可以在源代码中看到这些方法被标记为已弃用: Link to
我是 Observables 和响应式(Reactive)编程 rxjs 的新手,我已将 redux-observable 库添加到我的 React/redux 应用程序中以开始使用它。 我为登录过程
以下代码仅在 observable2 完成后才从 observable1 发出项目。 observable1.startWith(observable2) .subscribe(
我有一个使用 startWith 运算符和 debounceTime 的流。我希望第一个值跳过 debounceTime 并立即开始。我该怎么做? control.valueChanges .
我正在使用 Typescript 学习 Angular 5。我正在尝试实现一个 Angular Material 自动完成功能,我发现以下代码对我来说非常晦涩: this.filteredStates
我有一个关于多播 observables 和我注意到的意外(对我而言)行为的问题。 const a = Observable.fromEvent(someDom, 'click') .map(e
我有一个 rx observable,我需要添加一个特定的项目,但前提是 observable 至少发出一个项目。 我找遍了所有的运营商,但找不到合适的。最接近的是 StartWith但根据图表,它会
请有人告诉我为什么我的 startsWith() 方法是红色的。我对 Selenium 和 Java 很陌生,非常感谢任何帮助。我使用的是 IntelliJ IDEA 社区版、Java 和 Windo
我的应用程序中有许多用于网络请求的 Observable。由于有太多相同之处,我对它们应用了 Observable 转换: /** * Creates a transformer that appl
我有以下代码。这是基于使用临时容器来选择特定项目,然后将它们添加到列表的末尾。 var allRoles = roles.Table .AsEnumerable().Select(p =
我正在使用另一个 Observable 的输入来过滤一个 Observable - 过滤的输入来自用户。 过滤是通过 RxJS 运算符combineLatest完成的。使用这个意味着当订阅这个流时,在
如果我希望订阅者最初至少获得 X,我可以对现有的 Observable 使用 startWith( X ) 吗: streamFromLibrary.startWith( X ).subscribe(
我有两个列表。两者包含相同的值: QStringList filePaths; filePaths.append("C:/backup"); filePaths.append("C:/downl
是否有任何预定义函数可以使用 Rust 的迭代器开始迭代自定义元素? 最佳答案 iteration with a custom element 如果您只有一个元素,请使用 iter::once . 如
有人知道“startWith”函数变成了什么吗? 我尝试使用一本适用于 4.x 版本的书来学习 reactivecocoa。该示例使用 startWith 为 datePicker 控件强制赋值。 最
我是一名优秀的程序员,十分优秀!