ユーザーが送信をクリックすると、jsonの各要素の値と初期値が同じか異なるかを確認しています。値と初期値が同じでない場合は、Rxjs を使用してサービス コールを呼び出しています。initail の値と値がすべての要素で同じである場合、「Error-Data is not changed」というエラー メッセージが表示されます。
私のjsonはこのようなものです-
this.subscriptionList= [{name:"Chat Integration",value:false,initialValue:false},{name:"Dashboard Functionality",value:false,initialValue:false},
{name:"Quarterly Maintenance Window",value:false,initialValue:false},{name:"Remedy Planned Outages",value:false,initialValue:false},
{name:"Schedule Integration",value:false,initialValue:false}];
送信ボタンをクリックすると、この関数を呼び出しています-
submitData()
{
var anyChangeDetected: boolean = false;
for(var i=0;i<this.subscriptionList.length;i++)
{
if(this.subscriptionList[i].value != this.subscriptionList[i].initialValue)
{
anyChangeDetected = true;
this.remedyService.submitSubscription(this.subscribeObject).subscribe(
data =>{
},
err=>{
},
()=>{
});
}
}
if(anyChangeDetected == false)
{
alert("Data is not changed");
}
}
今問題は、この関数を呼び出すときです。Web 呼び出しの非同期呼び出しが発生し、フローが if(anyChangeDetected == false) ブロックに直接移動し、そのアラートを受け取るたびに発生します。どうすれば回避できますか?