在angular中,如何在view和db中添加element,然后在不知道id的情况下直接删除?

In angular, how to add element to the view and db, then delete it directly after without knowing the id?

这是我的问题。 我有一个这样的文件夹列表:

import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Subscription } from 'rxjs';
import { Folder } from '../models/folder.model';
import { FoldersService } from '../services/folders.service';

@Component({
  selector: 'app-folders-list',
  templateUrl: './folders-list.component.html',
  styleUrls: ['./folders-list.component.scss']
})
export class FoldersListComponent implements OnInit {

  folders: Folder[];
  folderSubscription: Subscription;

  constructor(private foldersService: FoldersService) { }

  ngOnInit(): void {
    this.folderSubscription = this.foldersService.folderSubject.subscribe(
      (folders: Folder[]) => {
        this.folders = folders;
      }
    );
    this.foldersService.emitFolderSubject();
  }

  ngOnDestroy() {
    this.folderSubscription.unsubscribe();
  }

  onSubmit(form: NgForm) {
    const title = form.value['title'];
    const newFolder = new Folder(title);
    this.foldersService.createNewFolder(newFolder);
  }

}

所有数据都由下面的文件夹服务管理。只有他与数据库交互。当我 post 从数据库中获取或删除元素时,服务会执行此操作。 我的问题是以下一个: 当我创建一个元素时,数据库自己管理 id,我的意思是数据库通过自动增量选择一个 id。但是之后直接删除它,我需要这个id!我只找到了两个对我来说很奇怪的解决方案:

根据后端的配置方式,http.post 通常 returns 新保存的对象的 ID 由后端服务器设置。所以你可以在你的订阅中访问它,像这样:

.subscribe(
          folder => {
            console.log("Successfully added folder: " + folder.id);
          },
          (error) => {
            console.log("Error : ", error);
          }
        )

有帮助吗?

如果我们知道您的数据库和后端是什么,会更容易提供帮助。

添加项目后取回 Id 并不难,但如果你 reallllllyy 做不到,我以前工作在我们必须使用 GUID(不是主键)来识别数据库中的项目的数据库上。在你的table中添加一个字段只是为了删除一个项目,这真是令人难过。

GUID 可以在 Angular 端生成,因此很容易调用 DELETE 或任何你想要的。