#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 } } ]; }