Ich beginne mein Projekt mit Angular2 und die Entwickler scheinen RXJS Observable statt Promises zu empfehlen.Einfacher Filter auf Array von RXJS Observable
Ich habe erreicht, eine Liste von Elementen (Epen) vom Server abzurufen. Aber wie kann ich die Elemente filtern, indem ich zum Beispiel eine ID verwende?
Der folgende Code ist eine Extraktion aus meiner App und zeigt nun die endgültige Arbeitslösung. Hoffen wir, dass es jemandem hilft.
@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;
}
Vielen Dank im Voraus für Ihre Hilfe.
Sieht einfach aus, aber: Fehler: (33, 42) TS2365: Operator '===' kann nicht auf die Typen 'String' und 'Nummer' angewendet werden. Ich werde die Frage aktualisieren, um die gesamte Komponenten- und Service-Beziehung zu zeigen. – Johannes
Nun, wenn es das ist, dann kannst du einfach von String in Zahl oder Nummer in String umwandeln :) –