Я начинаю свой проект с Angular2, и разработчики, похоже, рекомендуют RXJS Observable вместо Promises.Простой фильтр по массиву RXJS Observable
Я достиг, чтобы получить список элементов (эпосов) с сервера. Но как я могу отфильтровать эльмы, используя, например, идентификатор?
Следующий код - извлечение из моего приложения и показывает окончательное рабочее решение. Будем надеяться, что это поможет кому-то.
@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;
}
Заранее благодарю вас за помощь.
Выглядит просто, но: Ошибка: (33, 42) TS2365: Оператор '===' не может применяться к типам «строка» и «номер». Я обновляю вопрос, чтобы показать весь компонент и отношения обслуживания. – Johannes
Ну, если это так, то вы можете просто конвертировать из строки в номер или номер в строку :) –