2017-03-16 1 views
1

mon projet utilise des serveurs sur site, le backend s'exécute sur .NET core et je développe sur un mac, donc je ne peux pas exécuter une instance de notre backend. J'ai donc créé un environnement séparé (angulaire-cli) pour mon projet qui utilise l'API web-in-memory.angular2 http.delete sur in-memory-web-api

Je l'ai configuré et fonctionne pour get/et get /: id. mais une suppression ne fonctionnera pas. Y a-t-il un moyen de faire ce travail ou n'est-il pas possible de le faire avec i-m-w-a?

Le Service

public getOperations(): Observable<IOperation[]>{ 
    return this.http.get(`${environment.baseUrl}operations/`) 
     .map(this.sharedService.extractData) 
     .catch(this.sharedService.handleError); 
    } 
    public getOperation(operationId: string):Observable<IOperation>{ 
    return this.http.get(`${environment.baseUrl}operations/${operationId}`) 
     .map(this.sharedService.extractData) 
     .catch(this.sharedService.handleError); 
    } 
    public deleteOperation(operationId: string): Observable<any>{ 
    return this.http.delete(`${environment.baseUrl}operations/${operationId}`) 
     .map(this.sharedService.extractData) 
     .catch(this.sharedService.handleError); 
    } 

La Dans la base de données de la mémoire

export class InMemoryDataService implements InMemoryDbService { 
    createDb() { 
     let operations: IOperation[] = [ 
      new Operation({ 
       id:'001', 
       name: 'Operation ABC', 
       status:'Active', 
       startDate: new Date().toLocaleDateString() 
      }), 
      new Operation({ 
       id:'002', 
       name: 'Operation DEF', 
       status:'Closed', 
       startDate: new Date().toLocaleDateString(), 
       endDate: new Date().toLocaleDateString() 
      }), 
      new Operation({ 
       id:'003', 
       name: 'Operation GHI', 
       status:'Closed', 
       startDate: new Date().toLocaleDateString(), 
       endDate: new Date().toLocaleDateString() 
      }), 
      new Operation({ 
       id:'004', 
       name: 'Operation JKL', 
       status:'Closed', 
       startDate: new Date().toLocaleDateString(), 
       endDate: new Date().toLocaleDateString() 
      }), 
     ]; 
     return {operations}; 
    } 
} 

oublié d'ajouter ma méthode de composant qui appelle ma méthode de service:

public deleteOperation(operation: IOperation){ 
     this.confirmationService.confirm({ 
      message: `Are you sure that you want to delete '${operation.name}'?`, 
      accept:() => { 
       this.operationsService.deleteOperation(operation.id) 
        .subscribe(()=>{ 
         this.loadOperations(); 
        }) 
      } 
     }); 
    } 

Répondre

0

Vous devez .subscribe() au Observable retour de deleteOperation() à pour http pour effectuer la demande. Sinon, aucun appel d'API ne sera effectué.

+0

oublié d'ajouter ma fonction de composant, ajouté ici maintenant, j'appelle .subscribe dessus le loadoperations est une méthode qui fait l'appel getOperations à nouveau – MiVvlt

1

Ok, j'ai trouvé le problème, J'ai supprimé la fonction .map de ma méthode de service deleteOperation. l'extrait a fait un res.json(), qui n'a pas fonctionné, donc il a échoué.