Ant*_*uet 3 typescript angular-material angular angular-material-5
我正在用Typescript学习Angular 5.我正在尝试实现一个角度材料自动完成,我发现以下代码对我来说非常困难:
this.filteredStates = this.stateCtrl.valueChanges
.pipe(
startWith(''),
map(state => state ? this.filterStates(state) : this.states.slice())
);
Run Code Online (Sandbox Code Playgroud)
完整的代码可以在这里找到: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())
);
Run Code Online (Sandbox Code Playgroud)
它只会发出一个值.但是同时处理这两种情况更容易,所以这startWith是一种很好的方法......
| 归档时间: |
|
| 查看次数: |
2745 次 |
| 最近记录: |