Joh*_*Rin 4 javascript observable rxjs typescript angular
在我的ThreadService类中,我有一个函数getThreads(),它向我返回Observable<Thread[]>所有线程。
现在,我想拥有另一个版本的函数,其线程由选定的主题过滤:function getSelectedThemeThreads(theme: Theme)。
我尝试了与运算符map,filter但是出现以下错误消息Property 'theme' does not exist on type 'Thread[]。
在我正在处理的代码下面:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, of } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { Thread } from '../models/thread.model';
import { Theme } from '../models/theme.model';
@Injectable({
providedIn: 'root'
})
export class ThreadService {
private threadsUrl = 'api/threads';
constructor(private http: HttpClient) { }
getThreads(): Observable<Thread[]> {
return this.http.get<Thread[]>(this.threadsUrl);
}
getSelectedThemeThreads(): Observable<Thread[]> {
return this.http.get<Thread[]>(this.threadsUrl).pipe(
map(threads => threads),
filter(thread => thread.theme.id === theme.id)
);
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助。
我以这个StackBlitz为例/ angular6-filter-result
主要思想是进行过滤,map()因为过滤器将获得对象数组。
getSelectedThemeThreads(theme: string): Observable<Flower[]> {
return this.http.get<Flower[]>(this.threadsUrl).pipe(
map(result =>
result.filter(one => one.theme === theme)
)
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7311 次 |
| 最近记录: |