当前位置: 首页 > 知识库问答 >
问题:

使用Angular 7 PATCH方法将元素添加到列表中

左丘成业
2023-03-14

我应该如何编写允许我在数组中添加和删除数组项的补丁方法?

项目类别:

export class ItemClass {
constructor(public person: string, public name: string, public quantity: number, public price: number){}
}

菜单模型:

    import { ItemClass } from './item.model';

    export class MenuModel {


    id: number;
    name: string;
    items: ItemClass[];

    constructor( id: number,  name: string, items: ItemClass[]){

         this.id = id;
         this.name = name;
         this.items = items;
    }
}

我有一个菜单组件和一个菜单服务。我需要一个补丁方法,将元素添加到菜单内的ItemClass[]数组中,并能够删除它们。

API方法如下所示:

   @PATCH
   @Path("/add/{menuId}")
   public void removeMenuItem(
            @PathParam("menuId") final int menuId,
            final Item item) {  // Item represents the Request Body
      final List<Item> items = this.menuRepository.get(menuId).getItems();
      items.add(item);
   }

(来自https://stackoverflow.com/a/54679303/479251)

共有1个答案

班高明
2023-03-14

在后端补丁方法的其他细节之后,这里有一个(粗略的)示例说明如何做到这一点。

您尚未为Angular指定版本,因此我假设您使用的是最新版本(7)和HttpClient

import { HttpClient } from '@angular/common/http'; 
/* ... */ 
export class YourComponentOrService {

  // note : you will need to add HttpClientModule to the application module 'imports' and 'providers' sections
  constructor(private http: HttpClient) {} 

  /* ...*/ 

  // call this method when you want to add an item
  public addItem(menuID: number, itemToAdd: ItemClass): void { 
    console.log('sending patch request to add an item');

    this.http.patch(`example.com/add/{menuId}`, itemToAdd).subscribe(
      res => { 
        console.log('received ok response from patch request');
      },
      error => {
        console.error('There was an error during the request');
        console.log(error);
      });

    console.log('request sent. Waiting for response...');

  }

  // as I could see on the linked Q&A, the delete method will be very similar
  // only the url will use 'remove' instead of 'add', along with the item name, and no body.

  /* .... */
}     

当然,这是基本的“概念证明”,让你开始,以适应你的需要和你的Angular应用程序的整体架构。

如您所见,我所做的只是读取APIendpoint,并相应地使用HttpClientAngular服务中的patch方法,以及预期的url和内容。

现在,您必须添加逻辑来发送具有正确参数的请求。

 类似资料:
  • 问题内容: 这个清单对象在咬我屁股。 每当我尝试向其中添加元素时,它都会产生以下结果: 产生错误的行无关紧要,但无论如何这里都是这样: 我不应该静态访问它吗? 变量的实际声明: 有任何想法吗?在Google上找不到任何值得的东西。 问题答案: Arrays.asList()将给您返回不可修改的列表,这就是为什么添加失败的原因。尝试使用以下方法创建列表:

  • 问题内容: 我的问题是我想在遍历新元素的同时扩展一个包含新元素的列表,并且希望迭代器继续刚才添加的元素。 根据我的理解,会在列表中的当前元素之前而不是之后添加一个元素。是否可以通过其他方式实现这一目标? 问题答案: 除了以外,您无法在修改集合时使用进行迭代。 但是,如果使用方法,该方法返回,并对其进行迭代,则您还有更多要修改的选项。从javadoc中获取: 新元素插入到隐式光标之前:…后续调用将返

  • 我对如何在现有的mongodb文档中将元素添加到数组中有点困惑,或者为什么我的结果没有正确显示以及我的期望如何。 集合中只有一个文档,并且永远只有一个。当我在命令行上的mongo会话中执行命令时,mongo文档看起来像: 我想在< code >计算列表中添加另一个对象。 我运行的 Java 代码基于此示例: 但是,当我在这之后的代码中执行或在mongo会话中执行时,没有添加新文档。没有抛出错误,完

  • 问题内容: 我想避免。我该怎么办? 问题答案: 您可以在迭代本身期间使用支持remove / add方法的。

  • 问题内容: 我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。这是一个例子: 我已经在我的代码中尝试过了,它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会折断吗? 编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。另外,我需要使用“ somecond()”检查附加对象。 编辑:在某些时候“ somecond(a)”将为假,因此不能有无限循环。

  • 我有麻烦了。 问题是我试图将一个对象添加到这个对象的列表中。这个列表是一个属性,没有错误,但是当我运行它的时候,它失败了,因为:“NullReferenceException”。听起来合乎逻辑,因为列表的属性是“null”,但我不能声明一个属性,是吗? 她有些代码被剪掉了: [...] [...]