반응형
객체 배열의 각도 RxJS 관측 가능 필터
나는 Angul과 Observable에 익숙하지 않다.나는 객체 배열에 필터를 적용하고 싶다.내 암호는 이렇게 생겼어.
getReport()는 모든 보고서를 얻는다.
getReports(): Observable<IReport[]> {
console.log("in get Reports Service Call");
return this._http.get<IReport[]>(this.URL)
.pipe(
tap(data => console.log('All Data Retrieved - ' + JSON.stringify(data))),
catchError(this.handleError));
}
보고서 이름을 기준으로 필터링하고 IReport 배열을 줄 수 있는 다른 방법을 쓰려고 한다.이게 내가 지금 가지고 있는 거야.
getReportDetails(name : string) : Observable<IReport[]>
{
return this.getReports().pipe(
map((reports : IReport[]) => reports.find(p => p.reportName === name))
);
}
에 오류가 있다.
Type 'Observable<IReport>' is not assignable to type 'Observable<IReport[]>'.
5가지 속성을 가진 IReport 인터페이스 입니다.
export interface IReport {
date: Date;
reportName: string;
reportLink: string;
reportStatus: string;
region: string;
}
내가 뭘 잘못하고 있는 거지?모두 고마워.
그래야 한다고 생각한다.
map((reports : IReport[]) => reports.filter(p => p.reportName === name))
대신에
map((reports : IReport[]) => reports.find(p => p.reportName === name))
find
첫 번째 것을 돌려줄 것이다.IReport
조건에 맞는p.reportName === name
그냥 바꿔서 해 봐.find
와 함께filter
, find는 하나의 객체만을 얻는 것이고, filter는 객체 배열을 얻는 것이다.
getReportDetails(name : string) : Observable<IReport[]>
{
return this.getReports().pipe(
map((reports : IReport[]) => reports.filter(p => p.reportName === name))
);
}
반환된 데이터를 필터링하기 위한 더 나은 솔루션은 rxjs 필터 연산자가 될 것이다.
https://www.learnrxjs.io/operators/filtering/filter.html 그러면 당신은 쉽게 그것을 관찰할 수 있는 오래된 자료로 파이프를 칠하고 당신이 구독할 수 있는 여과된 데이터를 반환할 수 있다.
참조URL: https://stackoverflow.com/questions/52263374/angular-rxjs-observable-filter-on-array-of-objects
반응형
'IT이야기' 카테고리의 다른 글
react-router 렌더 함수의 URL 매개 변수에 액세스 (0) | 2022.03.19 |
---|---|
테스트하는 동안 MemoryRouter를 사용하여 경로로 이동할 수 없음 (0) | 2022.03.19 |
기본 반응의 표 행 및 열? (0) | 2022.03.19 |
활자를 사용하여 여러 개의 반환 유형을 지정하는 방법 (0) | 2022.03.19 |
후크가 달린 수출 수업을 이용할 때 수업을 빼먹어야 할까? (0) | 2022.03.19 |