Как сформулировать объект углового вложенного массива

#arrays #angular #postman

#массивы #угловой #почтальон

Вопрос:

У меня есть отношения с сущностью, в которых у 1 отеля может быть много контрактов, а у 1 контракта может быть много номеров.

Для этой цели я использовал приведенный ниже код.

 hotel : Hotels = new Hotels();  //contractsList: Contract;    public userData:Contract[] = [{  start_date:new Date(),  end_date:new Date,  room_type:RoomType[{  id:0,  name:'',  max_adults:0,  max_rooms:0,  price:0  }]  

ошибка Однако это не позволяет мне назначать таким образом.

Таким образом, основной формат запроса должен быть таким:

 { "hotel_name":"name", "hotel_email":"hotel@gmail.com", "contractList":[{  "start_date": "2020-12-2",  "end-date":"2020-12-10",  "roomsList":[{  //room details  }] }] }  

HTML-код

 form #addressForm="ngForm" class ="text-center border border-light p-5" (ngSubmit)="logValue()"gt;  lt;p class="h4 mb-4"gt;Enter hotel detailslt;/pgt;  lt;div class="row justify-content-center"gt;  lt;div class="col-6"gt;   lt;input type="text" class="form-control mb-4" name = "name" [(ngModel)]=" hotel.name" placeholder="Enter hotel name"/gt;  lt;input type="text" class="form-control mb-4" name = "email" [(ngModel)]=" hotel.email" placeholder="Enter hotel email"/gt;  lt;input type="text" class="form-control mb-4" name = "address1" [(ngModel)]=" hotel.address1" placeholder="Enter hotel address line 1"/gt;  lt;input type="text" class="form-control mb-4" name = "address2" [(ngModel)]=" hotel.address2" placeholder="Enter hotel address line 2"/gt;    lt;brgt;lt;brgt;    lt;button class="btn btn-primary mb-2" [ngStyle]="{align:'left'}" type="button" (click)="addContract()"gt;Add CONTRACTlt;/buttongt;    lt;!-- some code here - see full code at the end of this tutorial --gt;  lt;section class ="container border mb-4 p-3" *ngFor="let item of userData; let i = index;"gt;  lt;!-- input fields inside the *ngFor --gt;  lt;div class="form-row mb-4"gt;  lt;div class="col"gt;  lt;labelgt;Start Datelt;/labelgt;  lt;input type="date" class="form-control" [(ngModel)]="item.start_date"  name="startDate_{{i}}"/gt;  lt;/divgt;  lt;div class="col"gt;   lt;labelgt;End Datelt;/labelgt;  lt;input type="date" class="form-control" [(ngModel)]="item.end_date"  name="endDate_{{i}}"/gt;  lt;/divgt;  lt;/divgt;    lt;/sectiongt; lt;/formgt;  

Я не уверен, как включить детали номеров в контракт

Файл TS

 logValue() {  console.log(this.userData);  this.hotel.contractList= this.userData; }  

с помощью этого метода я пытаюсь присвоить массив контрактов переменной contractList отеля

Комментарии:

1. можете ли вы поделиться тем, как выглядит ваш тип данных для контракта и тип номера?

Ответ №1:

Вы пытаетесь использовать RoomType как класс, однако это тип данных, поэтому вместо этого вы могли бы сделать что-то подобное:

 interface Contract {  start_date: Date;  end_date: Date;  room_type: RoomType; }  interface RoomType {  id: number;  name: string;  max_adults: number;  max_rooms: number;  price: number; }  class MyClass {  userData: Contract[] = [  {  start_date: new Date(),  end_date: new Date(),  room_type: {  id: 0,  name: '',  max_adults: 1,  max_rooms: 2,  price: 123  }  }  ]; }