0

我正在使用Anular9和使用mat-raised-button如下:

  <button mat-raised-button (click)="saveClick()" color="primary"><mat-icon>check</mat-icon>&nbsp;&nbsp;Ok</button>

定义saveClick()如下

saveClick() {
    for (let i = 0; i < this.hostid.length; i++) {
        const saudit: SInterface = {
            data: this.data,
            eid: this.eid[i],
            serverId: this.hostid[i]
        };
        this.subs.sink = this.sservice.addRecord(saudit)
            .subscribe(s => {
                this.dialog.close();
            });
    }

}

data是所有记录的共同点。

上面的代码只保存了第一条记录i=0。如何更改saveClick()以将所有记录保存到i < this.hostid.length?

4

1 回答 1

1

H。

与其使用 for 循环,不如尝试使用 map,一旦您将拥有一系列 saudits,然后将其作为参数调用您的服务。

顺便提一句。将您的呼叫移至循环/地图之外的服务。

** 编辑我不完全了解您的业务逻辑,但我至少会将该映射用作字符串点。

    // Map each Id in the hostid array to SInterface
    const saudits: SInterface = this.hostid.map((id, index) => {
      return {
        data: this.data,
        eid: this.eid[index],
        serverId: id,
      } as SInterface;
    });

    // Pass all saudits at once to service
    this.sservice.addRecord(saudits).subscribe(...);
于 2020-07-31T06:56:33.377 回答