0

私の角型アプリケーションでは、データをキャッシュしているので、この問題があります。 onCreate()関数を使って何かを追加した後。新しいデータを取得するために、成功したサブスクライブ関数でgetAll()関数を呼び出しました。しかし、私はまだ新しいデータを取得しません。私はそれが私のサービスのキャッシュデータのためだと信じています。新しいデータがあるかどうか、どうすればよいでしょうか?または、新しいデータがあるときにキャッシュを既存のデータに修正し、データをリフレッシュするにはどうすればよいですか?角度のデータのキャッシングとリフレッシュ

サービス

getAll() { 
    if(!this.materials) { 
     this.materials = this.httpClient.get<any>(this.url) 
          .map((response => response)) 
          .publishReplay(1) 
          .refCount(); 

    } 
    return this.materials; 
    } 

のgetAll()

getAllMaterials() { 
    this.subscription = this.materialsService.getAll() 
     .subscribe(
      (data:any) => { 
      this.materials = data.materials; 
      console.log(data); 
      }, 
      error => { 
      alert("Error"); 
      console.log(error); 
      }); 
    } 

のonCreate(TS)

を-ts
onCreateMaterial(form: NgForm){ 

    const formData = { 
     sku: form.value.sku, 
     name: form.value.name, 
     supplier_id: form.value.supplier, 
     price: form.value.price 
    } 

    this.materialsService.addMaterial(formData) 
     .subscribe(
      data => { 
      let message = data.message; 
      alert(message); 
      console.log(data); 
      this.modalRef.close(); 
      this.getAllMaterials(); 
      }, 
      error => { 
      alert("Error Adding"); 
      console.log(error); 
      }); 
    } 

答えて

0

私はあなたが購読する前に、被験者は一回の反復後に完了としてマークされているので、それが再び発動することはありませんように、問題は、あなたが.publishReplay().refCount()を使用していることだと思います.publishReplay().refCount()you can read it here.上のいくつかの研究をしました。 Read about it here.私はこれに慣れていませんが、一発の価値があります。

publishReplayのパラメータを削除し、手動で購読を停止して結果があるかどうかを確認してください。

関連する問題