(角度6)不会重新加载数据

时间:2018-09-23 14:39:11

标签: angular angular6

我使用角度6,在更新/创建对象并重新加载所有数据后出现问题,看来旧数据已重新加载。我尝试添加随机数,但效果不佳。

我的代码如下:

在我的服务范围内:

 getPayCalendars(): Observable<PayCalendar[]>
 {
   return this.authHttp.get<PayCalendar[]>(this.baseUrl+"payCalendar/all"+"?rand="+Math.random());   
}

在我的组件内部:

reloadPayCalendars()
  {
      console.log("RELOAD PAYCALS");
    this.adminSettingService.getPayCalendars().subscribe(
        (result) => {
            this.payCalendars = result; 
            console.log(`Result: ${JSON.stringify(result)}`);
        }, error => {
            this.alertify.error("Error: Cannot retrive pay calendars");
        }
    );
  }

使用EventEmitter保存子组件中的数据后,从此方法调用ReloadCalendars()。我看到数据库中的数据已更改。

updatingData(result: any)
  {        
    this.reloadPayCalendars();
    this.modalRef.hide();
  }

<app-form-paycalendar
            [id]="id"
            [name]="name"
            [frequency]="frequency"
            [payPeriodStartDate]="payPeriodStartDate"
            [payPeriodEndDate]="payPeriodEndDate"
            [nextPaymentDate]="nextPaymentDate"
            (onSubmit)="updatingData($event)"></app-form-paycalendar>

我添加了另一个按钮来调用reloadPayCalendars(),它获取了新的/更新的数据。

<button type="button" class="btn btn-primary" (click)="reloadPayCalendars()"> Reload </button>

该如何解决?

Fyi:后端将Dotnet Core 2.1与C#结合使用。

编辑: 在我用来保存/更新数据的位置添加组件

儿童组件:

save()
  {
    let payCalendar = this.editForm.getRawValue();
    if(payCalendar.id != null){
        this.adminService.updatePayCalendar(payCalendar).subscribe(
            result => {
                payCalendar = result ; 
                this.alertify.success("Update Pay Calendar Successfully");
            }, error => {   
                this.alertify.error(error);
            }
        );
    }else {
        this.adminService.createPayCalendar(payCalendar).subscribe(
            result => {
                payCalendar = result ; 
                this.alertify.success("Update Pay Calendar Successfully");
            }, error => {   
                this.alertify.error(error);
            }
        );
    }
    this.onSubmit.emit({payCalendar: payCalendar});
  }

因此调用此方法后,它将发出给父对象,并且上面的父对象称为“ updatingData()”。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我仍在后台进行创建/更新时检索数据。所以我在完成创建/更新数据后发出事件。

save()
  {
    let payCalendar = this.editForm.getRawValue();
    let opResult: PayCalendar[] ; 
    if(payCalendar.id != null){
        this.adminService.updatePayCalendar(payCalendar).subscribe(
            result => {
                opResult = result;
                this.alertify.success("Update Pay Calendar Successfully");
                **this.onSubmit.emit({payCalendars: opResult});**
            }, error => {   
                this.alertify.error(error);
            }
        );
    }else {
        this.adminService.createPayCalendar(payCalendar).subscribe(
            result => {
                opResult = result;
                this.alertify.success("Create Pay Calendar Successfully");
                **this.onSubmit.emit({payCalendars: opResult});**   
            }, error => {   
                this.alertify.error(error);
            }
        );
    }
  }