2017-09-12 2 views
0

Ich versuche, einen Termin Scheduler App mit Devextreme Scheduler zu machen. Ich habe einen kleinen Fehler. Ich würde gerne wissen, warum, wenn ich einen Termin und ziehen Sie erstellen und löschen den Termin i i diesen Fehler nur schaffen habe auf meiner Konsole:Aktualisierungsfehler auf Devextreme Scheduler-Plugin - eckig 4 ​​

PUT http://localhost/v0/croissant/undefined 404 (Not Found) 
appointment.service.ts:19 An error occurred Response {_body: "", status: 404, ok: false, statusText: "Not Found", headers: Headers…} 
webpackJsonp.../../../../../src/app/services/appointment.service.ts.AppointmentService.handleError @ appointment.service.ts:19 
ZoneDelegate.invoke @ zone.js:203 
onInvoke @ core.es5.js:3890 
ZoneDelegate.invoke @ zone.js:202 
Zone.run @ zone.js:96 
(anonymous) @ zone.js:462 
ZoneDelegate.invokeTask @ zone.js:236 
onInvokeTask @ core.es5.js:3881 
ZoneDelegate.invokeTask @ zone.js:235 
Zone.runTask @ zone.js:136 
drainMicroTaskQueue @ zone.js:368 
ZoneTask.invoke @ zone.js:308 
core.es5.js:1020 ERROR Error: Uncaught (in promise): Response with status: 404 Not Found for URL: http://localhost/v0/croissant/undefined 

, aber wenn ich die Seite aktualisieren und dann bewege ich den Termin, alles funktioniert gut ...

hier ist mein Update Termin Methode auf meinem appointment.Service.ts

updateAppointment(id: string, userId :string, timestamp :string, reason: string): Promise<Appointment>{ 

    let bodySearchParam = new URLSearchParams(); 
    bodySearchParam.append('userId', userId); 
    bodySearchParam.append('timestamp', this.datetotimestamp(timestamp).toString()); 
    bodySearchParam.append('reason', reason); 
    let body = bodySearchParam.toString(); 


    var AppointmentUrlUpdate = this.AppointmentUrlWrite + "/" + id; 

    return this.http.put(AppointmentUrlUpdate, body) 
        .toPromise() 
        .then(response => 
         console.log("event updated") 
        ) 
        .catch(this.handleError); 

    } 

hier ist mein Eventhandler in meinem Kalender Komponente

updateAppointment(e: any){ 
    e.appointmentData.endDate = this.add30mnTo(e.appointmentData.startDate); // bugFix pour l'affichage du calendrier 
    this.appointmentService.updateAppointment(e.appointmentData.id, e.appointmentData.ownerId, e.appointmentData.startDate, e.appointmentData.text) 
    } 

und hier ist, wo ich meine

Eventhandler auf meine calendar.component.html nennen
<dx-scheduler 
    (onAppointmentUpdated)= "updateAppointment($event)" 
> 

</dx-scheduler> 

danken ist für Ihre Hilfe!

Antwort

0

Das Problem ist, meine API Notwendigkeit und ID, um den Termin zu aktualisieren. Aber die ID ist nicht für jetzt gespeichert. Die Methode der Auflösung ist:

createAppointment(userId :string, timestamp :string, reason: string): Promise<Appointment> { 

    let bodySearchParam = new URLSearchParams(); 
    bodySearchParam.append('userId', userId); 
    bodySearchParam.append('timestamp', this.datetotimestamp(timestamp).toString()); 
    bodySearchParam.append('reason', reason); 
    let body = bodySearchParam.toString(); 

    console.log(body) 
    return this.http.post(this.AppointmentUrlWrite,body) 
        .toPromise() 
        .then(response => 
        this.createdId = response.json().id // Get the appointment's ID 
       ) 
        .catch(this.handleError); 
    } 

eine Funktion machen, die die createdID zurückgibt:

getCreatedId(){ 
    return this.createdId; 
    } 

und auf der updateAppointment Methode dies zu tun:

if(e.appointmentData.id == null){e.appointmentData.id = this.appointmentService.getCreatedId();} 

die Bedingung für den Termin dient, die bereits ist habe eine ID (alle Termine haben nach dem Auffrischen der Seite eine ID)

Hoffe es kann für einen anderen :)

dienen