Angular 何时使用RxJS Observable<;对象[]>;和可观察的<;对象>;?
使用Angular 6,我基于定义了我的服务。如果一个方法应该返回多个值,我总是返回一个Angular 何时使用RxJS Observable<;对象[]>;和可观察的<;对象>;?,angular,typescript,rxjs,observable,Angular,Typescript,Rxjs,Observable,使用Angular 6,我基于定义了我的服务。如果一个方法应该返回多个值,我总是返回一个可观察值。另外,看看(,这只适用于~Observable(Observable:表示未来值或事件的可调用集合。),似乎我应该使用Observable来收集类似服务器的返回,但我使用什么来处理单值返回呢 示例服务: all(): Observable<T[]> { return this.httpClient.get<T[]>(this.urls().allURL());
可观察值。另外,看看(,这只适用于~Observable(Observable:表示未来值或事件的可调用集合。
),似乎我应该使用Observable
来收集类似服务器的返回,但我使用什么来处理单值返回呢
示例服务:
all(): Observable<T[]> {
return this.httpClient.get<T[]>(this.urls().allURL());
}
paginate(pageRequest: any): Observable<Page<T>> {
return this.httpClient.post<Page<T>>(this.urls().paginateURL(), pageRequest);
}
findOneById(id: number): Observable<T> {
return this.httpClient.get<T>(this.urls().byIdURL(id));
}
我不确定你想要什么。如果一个群体是可观察的
export class AppComponent implements OnInit {
people: any[] = [
{ name: 'Sue', age: 25 },
{ name: 'Joe', age: 30 },
{ name: 'Frank', age: 25 },
{ name: 'Sarah', age: 35 }
];
result:any[][];
ngOnInit()
{
this.myObservable().subscribe(res=>{
this.result=res;
})
}
myObservable():Observable<any[][]>
{
return from(this.people).pipe(
groupBy((person:any)=>person.age),
mergeMap(group=>group.pipe(toArray())),
toArray());
}
导出类AppComponent实现OnInit{
人物:任何[]=[
{姓名:苏,年龄:25},
{姓名:'Joe',年龄:30},
{姓名:'Frank',年龄:25},
{姓名:'Sarah',年龄:35}
];
结果:任何[];
恩戈尼尼特()
{
this.myObservable().subscribe(res=>{
结果=res;
})
}
myObservable():可观察的
{
从(这个人)回来(
groupBy((个人:任何)=>个人年龄),
mergeMap(group=>group.pipe(toArray()),
toArray());
}
还有.html
<div *ngFor="let ages of result">
<strong>{{ages[0].age}}</strong>
<div *ngFor="let item of ages">
{{item.name}}
</div>
</div>
{{ages[0]。age}}
{{item.name}
您可以在httpClient get中使用不同的返回类型,也可以在函数中使用另一个返回类型。只需使用map转换响应:http.client.get(…).pipe(map(响应:T[]=>{…return T})@Eliseo我的问题主要是,什么是最佳实践?我是否在任何地方都使用可观察的
,然后在单个值中获得第一个值?我更新了我的问题。顺便说一句,感谢按代码分组,我可以使用它!
<div *ngFor="let ages of result">
<strong>{{ages[0].age}}</strong>
<div *ngFor="let item of ages">
{{item.name}}
</div>
</div>