Tôi đang bắt đầu dự án của mình với Angular2 và các nhà phát triển dường như đề xuất RXJS Observable thay vì Promises.Bộ lọc đơn giản trên mảng RXJS Quan sát
Tôi đã đạt được để lấy danh sách các phần tử (sử thi) từ máy chủ. Nhưng làm thế nào tôi có thể lọc các elments bằng cách sử dụng ví dụ như một id?
Mã sau đây là trích xuất từ ứng dụng của tôi và hiển thị bây giờ là giải pháp làm việc cuối cùng. Hãy hy vọng nó giúp ai đó.
@Injectable()
export class EpicService {
private url = CONFIG.SERVER + '/app/'; // URL to web API
constructor(private http:Http) {}
private extractData(res:Response) {
let body = res.json();
return body;
}
getEpics():Observable<Epic[]> {
return this.http.get(this.url + "getEpics")
.map(this.extractData)
.catch(this.handleError);
}
getEpic(id:string): Observable<Epic> {
return this.getEpics()
.map(epics => epics.filter(epic => epic.id === id)[0]);
}
}
export class EpicComponent {
errorMessage:string;
epics:Epic[];
epic:Epic;
constructor(
private requirementService:EpicService) {
}
getEpics() {
this.requirementService.getEpics()
.subscribe(
epics => this.epics = epics,
error => this.errorMessage = <any>error);
}
// actually this should be eventually in another component
getEpic(id:string) {
this.requirementService.getEpic(id)
.subscribe(
epic => this.epic = epic,
error => this.errorMessage = <any>error);
}
}
export class Epic {
id: string;
name: string;
}
Cảm ơn trước sự giúp đỡ của bạn.
Có vẻ đơn giản nhưng: Lỗi: (33, 42) TS2365: Toán tử '===' không thể áp dụng cho các loại 'chuỗi' và 'số'. Tôi sẽ cập nhật câu hỏi, để hiển thị toàn bộ thành phần và mối quan hệ dịch vụ. – Johannes
Vâng, nếu đó là sau đó bạn chỉ có thể chuyển đổi từ chuỗi thành số hoặc số thành chuỗi :) –