Ich habe ein paar Fragen in Bezug auf eckige 2/4 Muster für einfache Crud-Anwendung. Die meisten der Beispiele, die ich gesehen habe, sehe ich nicht, wie die Daten nach dem Einfügen/Aktualisieren, etc. aktualisiert werden.Angular Observables vs Promise CRUD und erfrischende Daten
Ich bin ein bisschen neu mit Observables, aber verstehen die meisten der Muster mit Ausnahme mit erfrischenden Daten nach einem Einfügen/Aktualisieren/Löschen. Kann jemand die beste Methode zum Aktualisieren von Daten erklären und brauche ich wirklich Observables anstelle von Versprechungen? Wird akzeptiert, Versprechen zu halten?
Wie mache ich Folgendes mit Observables?
users.service
insertPromise(user : User)
{
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let url = this.baseUrl;
return this.http.post(url, JSON.stringify(user),options)
.do(data=>console.log(JSON.stringify(data)))
.toPromise()
.then(this.extractPromiseData)
.catch(this.handleError);
}
insertObservable(user : User) {
this.usersService.insert(user)
.subscribe(
resp => {
console.log(resp);
},
error => this.errorMessage = <any>error);
}
Benutzer-list.component (contains nach Einsatz aufzufrischen)
insert(user: User)
{
this.usersService.insertPromise(user)
.then(result=>console.log(result))
.then(
()=>this.usersService.getAllUsers()
.then(
users=>
this.users = users
)
.catch(error=>console.log(error))
)
.catch(error=>console.log(error));
}
insertObservable(user: User)
{
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let url = this.baseUrl;
return this.http.post(url, JSON.stringify(user),options)
.map((response: Response) => response.json())
.do(data=>console.log(JSON.stringify(data)))
.catch(this.handleError);
}
ja neuladen nur der modifizierte/neue Benutzer macht Sinn aber wie würde ich die gesamte Liste laden, die ich nicht tun werde, sondern nur als Referenz. dann für put sollte ich nur für den Benutzer suchen und diesen Benutzer auf den aktualisierten Benutzer festlegen. Zum Löschen sollte ich nur den Benutzer dann entfernen? – Fab
Eigentlich habe ich es herausgefunden, ich benutze PrimeNG DataTable und bemerkte, dass es nur mit dem Spread-Operator funktioniert, der neu für mich ist, aber sobald ich meinen Code geändert habe, funktioniert es wie erwartet. Danke für die Hilfe!! lassen Benutzer = [... this.users]; users.push (Benutzer); this.users = Benutzer; – Fab
Vielleicht erkennt DataTable nur Änderungen, wenn ein neues Objekt (Array) empfangen wird und der Spread-Operator offenbar ein neues Array erstellt. – gsc