我正在从JSON文件中将Job
和Offer
对象读入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
对象吗?
答案 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)
}