如何查找自动生成ID的值?

时间:2017-06-27 17:28:18

标签: angular

在我的角度程序中,我的桌子底部有一个空行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);
}

1 个答案:

答案 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。