如何使用对象属性删除多个事件?

时间:2019-07-02 18:59:37

标签: angular typescript

我正在从JSON文件中将JobOffer对象读入Angular应用程序中。用户可以为工作提交要约,然后经理可以接受/拒绝要约。

目前,我可以拒绝/删除要约。现在的问题是,当我删除作业时,我还需要删除与该作业(offer.jobId)

相关的所有报价

这就是我获得Jobs的方式:

getAllJobs(): void {
    this.jobService.getJobs().subscribe(
      jobs => {
        this.jobs = jobs;
      },
      error => this.errorMessage = <any>error
    );
  }

我可以使用下表删除Jobs

<table>
    <tbody>
        <tr *ngFor="let job of jobs">
            <td>{{job.title}}</td>
            <td>
                <button (click)="deleteJob(job.id)"></button>
            </td>
        </tr>
    </tbody>
</table>

这是deleteJob()方法:

deleteJob(jobId: number) {
  this.jobService.deleteJob(jobId).subscribe(
    () => {
      console.log('Job Deleted Successfully');
      this.getAllJobs();
    },
    (err: any) => {
      console.log(err);
      this.errorMessage = <any>err;
    });
}

因此,此操作成功删除了Job对象,但是仍然有Offer个与此Job相关的对象。

这是我正在使用的接口:

export interface IJob {
  id: number;
  title: string;
  description: string;
  employeeId?: number;
  managerId: string;
  imageUrl: string;
}

export interface IOffer {
  id: number;
  managerId: number;
  jobId: number;
  employeeId: number;
}

如果有帮助,我的Offer Service中将包含以下代码:

deleteOffer(id: number): Observable<void> {
    return this.httpClient.delete<void>(`${this.baseUrl}/${id}`)
      .pipe(catchError(this.handleError));
}

有人可以告诉我如何删除与我刚刚删除的Offer相关的所有Job对象吗?

1 个答案:

答案 0 :(得分:0)

如果您有Offer个对象的数组:

const offers = [
    {id: 1; managerId: 1; jobId: 1; employeeId: 1;},
    {id: 2; managerId: 2; jobId: 1; employeeId: 2;},
    {id: 3; managerId: 3; jobId: 1; employeeId: 3;},
]

,例如,您已删除包含id = 1的商品。然后,您可以在数组offers中找到所有必要的报价:

const offersIdsToDelete = offers
    .filter(f => f.jobId == 1)
    .map(ids => ids.id );

并调用此命令进行删除:

deleteJobOffer(offersIds) {
   let offersObservable: Observable<Response>[] = [];
   for (let offerID in offersIds){
       this.offersObservable.push(this.deleteOffer(offerID));
   }
   return Observable.merge(...offersObservable)
}