2017-11-09 9 views
-1

私の角プロジェクトには、クライアントデータをデータベースに送るための送信ボタンが付いたページがありますが、送信後にクライアントを削除したいクライアントのテーブルを作成し、別のテーブルに情報を挿入します。問題は、クライアントの最初の挿入が、自分のデータを削除しているテーブルのクライアントIDを使用することです。それは同時に起こります、そして、彼らは両方とも同じボタンのクリックイベントにあります。どのように私は挿入関数が配置されるまでdelete関数呼び出しを待たせるべきですか?angle/typescriptプロジェクトの関数呼び出しを遅らせる

これは

<button ion-button full block color="danger"(click)="postDados(form.controls.itemRows);postNeurosensi(formsensi.controls.itemRows3);postEletroneuro(form2.controls.itemRows2);deletaDados()">Enviar</button> 

これを提出し、削除ボタンではPage.TSファイルで機能しています。

postEletroneuro(req){ 
    this.service.postEletroneuro(req.value) 
    .subscribe(
     data => console.log(data.message), 
     err => console.log(err) 

    ); 
    } 
    deletaDados(){ 

    this.service.deleteData(this.parametroid).subscribe(
     data => { 
     console.log(data.message); 
     this.getDados(); 
     } 

     , 
     err => console.log(err) 
    );  

    } 

そして今service.ts機能

postEletroneuro(params){ 
    let headers = new Headers(); 
    headers.append('Content-type','application/json'); 
    return this.http.post(`${this.api}eletroneuro/`,params,{ 
     headers: headers 
    }).map(
    (res:Response) => {return res.json();} 
); 

    } 

    deleteData(id){ 
    console.log(`${this.api}${id}`) 
    let headers = new Headers(); 
    headers.append('Content-type','application/json'); 
    return this.http.post(`${this.api}fichasdia/${id}/`,id,{ 
     headers: headers 
    }).map(
    (res:Response) => {return res.json();} 
); 
    } 

任意のアイデア?

+0

私はそれがサーバーがそれ自身で扱うことができるかどうかはわかりませんか? –

+0

現在の実行中の関数の最後に連続した関数を呼び出すのではなく、すべての関数を(クリックして)イベントの中に入れるのですか? –

答えて

0
postEletroneuro(req){ 
    this.service.postEletroneuro(req.value) 
    .subscribe(
     data => { 
     console.log(data.message); 
     deletaDados(); 
     }, 
     err => console.log(err) 

    ); 
    } 
    deletaDados(){ 

    this.service.deleteData(this.parametroid).subscribe(
     data => { 
     console.log(data.message); 
     this.getDados(); 
     } 

     , 
     err => console.log(err) 
    );  

    } 

そして(deletaDadosなし)コール:

<button ion-button full block color="danger"(click)="postDados(form.controls.itemRows);postNeurosensi(formsensi.controls.itemRows3);postEletroneuro(form2.controls.itemRows2);">Enviar</button> 
0

は、クリックイベントからdeletaDadosを削除し、サブスクリプション内で呼び出す

postEletroneuro(req){ 
this.service.postEletroneuro(req.value) 
.subscribe(
    data => { 
    console.log(data.message); 
    this.deletaDados();}, 
    err => console.log(err) 
); } 
0

このようにしてみてください。

<button ion-button full block color="danger" (click)="postEletroneuro(form2.controls.itemRows2)">Enviar</button> 

コンポーネント.ts

postEletroneuro(req) { 
    this.service.postEletroneuro(req.value) 
     .flatMap((data) => { 
      console.log("data", data); 
      return this.service.deleteData(this.parametroid); 
     }) 
     .subscribe((deleteRsp) => { 
      console.log("deleteRsp", deleteRsp); 
     }) 
} 
関連する問題