Angular 7 PATCH метод для добавления элемента в список - PullRequest
0 голосов
/ 14 февраля 2019

Как мне написать метод PATCH, который позволяет мне добавлять и удалять элементы массива внутри массива?

ItemClass:

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

MenuModel:

    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 [] внутри Menu и может также удалять их.

Метод 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);
   }

(из * 1014)*https://stackoverflow.com/a/54679303/479251)

1 Ответ

0 голосов
/ 14 февраля 2019

После дополнительных подробностей о методе исправления в бэкэнде, вот (грубый) пример того, как вы могли бы это сделать.

Вы не указали версию для 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.

Как видите, все, что я сделал, это прочитал конечные точки API и соответственно использовал метод patch из службы HttpClient Angular с ожидаемыми URL и содержимым.

Теперь, вы должны добавить логику для отправки запроса с правильными параметрами.

...