看来这应该是一件微不足道的事情,但是我真的在努力为一个简单的问题制定出一种简洁的非hacky解决方案。
我http.get(...对服务的Angular调用返回了一个Observable-它是T项的流(在我用映射之后response.json())
Observable是我组件上的一个属性。我<select>在组件模板中有一个元素,而这些<option>元素是通过*ngFor="let item of myObservable | async"模板中的代码创建的。
这创建了一个不错的select元素,它具有所有期望在浏览器中很好显示的值:)
现在有人要求我按字母顺序对select语句中的选项进行排序。
我不想创建一个排序管道,因为Angular团队建议不要这样做,而且Observables本质上是无法排序的。
香港专业教育学院试图将Observable转换为简单的结果数组-但这似乎也是不可能的。
那么,如何实现这一简单目标呢?我的JSON服务返回20个左右的JSON对象,而我似乎无法弄清楚如何按它们的属性之一对它们进行排序。
谢谢你的帮助。
好的,我已经解决了(如果有人感兴趣的话;
我从服务获得的原始代码是这样的:
public getAllItems(): Rx.Observable<DataItem> {
var returnVar = this.http.get("http://localhost:8090/api/rest/dataitem")
.map(res => {
return res.json()
});
return returnVar;
Run Code Online (Sandbox Code Playgroud)
但后来我将可观察对象更改为可观察对象类型数组,并在地图中对其进行了排序
public getAllItems(): Rx.Observable<DataItem[]> {
var returnVar = this.http.get("http://localhost:8090/api/rest/dataitem")
.map(res => {
var ret = <DataItem[]>res.json();
ret.sort((a,b) => a.name < b.name ? -1 : 1);
return ret;
} );
Run Code Online (Sandbox Code Playgroud)
我没有意识到您可以将响应对象转换为单个项目或整个数组。
感谢所有尝试提供帮助的人。
| 归档时间: |
|
| 查看次数: |
3653 次 |
| 最近记录: |