Angular - ошибка 400 при использовании универсального базового сервиса с другим именем свойства id - PullRequest
0 голосов
/ 06 ноября 2018

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

Для пользовательского компонента, который использует «код» вместо «id», когда я нажимаю, чтобы обновить элемент (метод PUT), консоль выдает ошибку 400 и показывает неверный URL-адрес запроса:

http://example.com/api/items/code

вместо

http://example.com/api/items/C002

Указанная полезная нагрузка верна:> {code: "C002", имя "Item 2"}

Класс изделия выглядит следующим образом:

export interface Item {
    code: string;
    name: string;
    }

Метод компонента:

updateItem(form: FormGroup) {
    this.route.params.subscribe(params => {
      form.value.id = params['code'];

      this.itemService.update('code', form.value)
        .subscribe(res => {
          this.router.navigate(['/list']);
        });
    });
}

и базовый класс обслуживания:

public update(id: string, dto: INDTO): Observable<OUTDTO> {
    return this.http.put<OUTDTO>(`/${this.controllerName}/${id}`, dto, this.endPointFactory.getRequestHeaders());
}

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 06 ноября 2018

В вызове сервисной функции есть небольшая проблема. Вместо того, чтобы передавать жестко закодированное значение code, восемь вы должны передать form.value.id или params['code'].

Модифицированный код как

updateItem(form: FormGroup) {
    this.route.params.subscribe(params => {
      form.value.id = params['code'];
      this.itemService.update(form.value.id, form.value)
        .subscribe(res => {
          this.router.navigate(['/list']);
        });
    });
}
...