【发布时间】:2018-11-12 12:53:00
【问题描述】:
在我的 ThreadService 类中,我有一个函数 getThreads(),它返回一个带有我所有线程的 Observable<Thread[]>。
现在,我想要另一个版本的函数,其中我的线程按选定的主题过滤:函数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)
);
}
提前感谢您的帮助。
【问题讨论】:
-
我认为线程是一个数组,你应该像 map(threads => threads.filter) 过滤器在这种情况下是标准 js
-
过滤器可以是starndar js(然后在地图中使用)或Rxjs learnrxjs.io/operators/filtering/filter.html。但是..thread.theme.id=== theme.id 中的 theme.id 是什么?
标签: javascript angular typescript rxjs observable