这看起来应该是一件非常微不足道的事情,但我真的在努力为一个简单的问题找出一个整洁而简单的解决方案。
我对服务的http.get(...
角度调用返回了一个可观察对象--它是一个T项流(在我使用response.json()
映射之后)
Observable是我的组件上的一个属性。我在组件模板中有一个<select>
元素,其中包含通过模板中的*ngFor="let item of myObservable | async"
代码创建的<option>
元素。
这创建了一个很好的select元素,其中包含我希望在浏览器中很好地显示的所有值:)
现在有人要求我按字母顺序对select语句中的选项进行排序。
我不想创建一个排序管道,因为Angular团队不建议这样做,而且看起来观察值本质上是不可排序的。
我试图将可观察到的结果转换为简单的结果数组-但这似乎也是不可能的。
那么我该如何实现这个简单的事情呢?我的JSON服务返回20个左右的JSON对象,我似乎不知道如何根据它们的某个属性对它们进行排序。
谢谢你的帮助。
发布于 2017-06-23 20:40:50
好的,我已经解决了(如果有人感兴趣的话;
我在服务中的原始代码是这样的:
public getAllItems(): Rx.Observable<DataItem> {
var returnVar = this.http.get("http://localhost:8090/api/rest/dataitem")
.map(res => {
return res.json()
});
return returnVar;
但随后我将可观察对象更改为数组类型的可观察对象,并在map中对其进行排序
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;
} );
我没有意识到您可以将响应对象转换为单个项或整个数组。
感谢所有试图帮助我们的人。
https://stackoverflow.com/questions/44720903
复制相似问题