Модель Angular 5 для объекта для почтового запроса - PullRequest
0 голосов
/ 30 апреля 2018

У меня следующая проблема. Я хотел бы загрузить данные из формы и отправить их по почте. Я получаю следующее сообщение об ошибке: «ОШИБКА TypeError: Невозможно установить свойство« штрих-код »из неопределенного» * ​​1001 *

Я презираю то, что штрих-код элемента неизвестен. Хотя я создаю объект типа Item.

Вот мой HTML-код

<form class="item-form">
  <mat-form-field>
    <input matInput name="barcode" placeholder="Barcode" value="IN SH " [(ngModel)]="barcode">
  </mat-form-field>

  {{barcode}}
<br>
  <mat-form-field>
    <input matInput name="itemName" placeholder="Item Name" [(ngModel)]="name">
  </mat-form-field>
  <br>

  <mat-form-field>
      <textarea matInput name="description" placeholder="Beschreibung" matTextareaAutosize matAutosizeMinRows="2"
                matAutosizeMaxRows="5" [(ngModel)]="description"></textarea>
    </mat-form-field>

    <br>
    <button mat-raised-button color="green" (click)='onSubmit()'>Item speichern</button>
</form>

Вот мой код компонента TS

public item: Item;
  public barcode: string;
  public name: string;
  public description: string;

  constructor(public itemFormService: ItemFormService) {

  }

  ngOnInit() {


  }

  onSubmit() {
    console.log('onSubmit in Item Form Component');
    this.item.barcode = this.barcode;
    this.item.name = this.name;
    this.item.description = this.description;

    console.log(this.item);
    this.itemFormService.addItem(this.item);
  }

Вот мой сервисный код TS

  constructor(public http: HttpClient) { }

  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json'
    })
  };

  addItem(item: any) {
    return this.http.post('', item, this.httpOptions).subscribe(
      (result) => {
        console.log(result);
      }
    );
  }

1 Ответ

0 голосов
/ 30 апреля 2018

В настоящее время, хотя ваше поле item было объявлено, оно не было инициализировано. Это означает, что оно имеет значение по умолчанию undefined.

Сначала вам нужно будет его инициализировать, используя this.item = new Item().

Альтернативно, вы могли бы сделать

item = {
    barcode: null,
    name: null,
    description: null
}

Обратите внимание, что нельзя просто назначить пустой объект для item, поскольку ваш тип Item требует штрих-кода, имени и описания.

...