在我的角度程序中,我的桌子底部有一个空行newRow
的表格。我可以在新行的所有列中输入值,然后按一个提交按钮,该按钮会将行添加到表中并清除新行,因此底部始终有一行。每当它被添加到数据库时,就会生成一个随机密钥编号,例如180316.我希望能够在输入后删除该行,那么如何找出生成的新密钥编号是什么?
我试过这个:
newRowID: number = 0;
并将其放入saveNewRow
函数:
this.newRowID = this.ptoData.length - 1;
this.newRow.ID = this.ptoData[this.newRowID].ID;
但它不起作用。我如何找到生成的新密钥号码是什么?
这是我的saveNewRow
功能:
saveNewRow(): void {
this.ptoDataService.save({
ID: 0,
EmpKey: this.empInfo[this.selectedEmployee].EmpKey,
type: this.selectedType,
date: this.newRow.date,
fullhalf: this.newRow.fullhalf,
hours: this.newRow.hours,
scheduled: this.newRow.scheduled,
notes: this.newRow.notes,
inPR: (this.newRow.inPR ? true : false),
prDate: this.newRow.prDate
})
this.ptoData.push({
ID: 0,
EmpKey: this.empInfo[this.selectedEmployee].EmpKey,
type: this.selectedType,
date: this.newRow.date,
fullhalf: this.newRow.fullhalf,
hours: this.newRow.hours,
scheduled: this.newRow.scheduled,
notes: this.newRow.notes,
inPR: (this.newRow.inPR ? true : false),
prDate: this.newRow.prDate
})
this.updateTotals();
this.newRow = new PTOData();
}
这里是调用内部的save
函数:
save(pto: PTOData): Promise<PTOData> {
return this.http
.put(this.ptoDateUrl + '/' + pto.ID, pto, this.options)
.toPromise()
.then(res => res.json().data as PTOData)
.catch(this.handleError);
}
然后,这是删除功能:
deleteRow(currPTO: PTOData): void {
this.ptodataService
.delete(currPTO.ID)
.then(() => {
this.onDelete.emit(currPTO.ID);
})
this.rowSelected = null;
}
这里是名为delete
的函数:
delete(ID: number): Promise<void> {
return this.http.delete(this.ptoDateUrl + '?ID=' + ID)
.toPromise()
.then(() => null)
.catch(this.handleError);
}
答案 0 :(得分:0)
看起来你的保存在你的代码中返回更新的对象,我认为它具有键值:
save(pto: PTOData): Promise<PTOData> {
return this.http
.put(this.ptoDateUrl + '/' + pto.ID, pto, this.options)
.toPromise()
.then(res => res.json().data as PTOData) <-- HERE
.catch(this.handleError);
}
调用此方法时,需要访问返回的数据。
我使用Observables代替promises,所以我不知道promises的语法是什么。使用Observables就是这样的:
this.productService.saveProduct(p)
.subscribe(
(product: IProduct) => this.returnedProduct = product,
(error: any) => this.errorMessage = <any>error
);
您需要将我的产品示例更改为您的PTOData。