angular - Angular 模板驱动的表单不显示默认值
问题描述
我有模板驱动的表单和一些默认值初始化 - selectedHotel,nrooms(房间数),ndays(天数)。当我在删除表单标签后运行此代码时,默认值会按预期显示,但是当我添加表单标签时,下拉列表、天数、房间等都是空的
<form #myform="ngForm">
<div class="sec3">
<h3>Name</h3>
<select (change)="onSelect($any($event.target).value)">
<option *ngFor="let hotel of hotels" [value]="hotel.name">
{{hotel.name}}
</option>
</select>
<p>Address:</p>
<p>{{selectedHotel.addr}}</p>
</div>
<div class="sec4">
<h3>Rooms</h3>
<input type="number" [class.is-invalid]="rooms.invalid" [(ngModel)]="nrooms" #rooms="ngModel" required>
<br><small *ngIf="rooms.invalid && rooms.touched">Please enter valid number of rooms</small>
<p>Available:</p>
<p>{{selectedHotel.rooms}}</p>
</div>
<div class="sec5">
<h3>Days</h3>
<input type="text" #days="ngModel" [(ngModel)]="ndays" [class.is-invalid]="days.invalid" required>
<p>Room Price:</p>
<p>{{selectedHotel.rmprice|currency:'INR'}}</p>
</div>
<div class="sec6">
<h3>Total: </h3>
<h3> {{nrooms*ndays*selectedHotel.rmprice|currency:'INR'}}</h3>
<button class="btn" (click)="onBook()">Book</button>
</div>
</form>
这是对应的ts文件
import { Component, OnInit } from '@angular/core';
import{Booking} from 'src/app/models/booking';
import {Hotel} from 'src/app/models/hotel';
@Component({
selector: 'app-hotel',
templateUrl: './hotel.component.html',
styleUrls: ['./hotel.component.css']
})
export class HotelComponent implements OnInit {
hotels:Hotel[]=[
{name:'Express Inn',addr:'Prashant Nagar, Pathardi Phata, Nashik',rmprice:1000,rooms:100},
{name:'Emerald Park',addr:'Holaram Colony, Sharanpur, Nashik',rmprice:2000,rooms:50}
]
bookings:Booking[]=[];
display;
selectedHotel:Hotel;
nrooms:number;
ndays:number;
id_cnt;
constructor() {
this.nrooms=1;
this.ndays=1;
this.display=true;
this.id_cnt=0;
this.selectedHotel=this.hotels[0];
}
ngOnInit(): void {
}
onSelect(name:string)
{
for (var i = 0; i < this.hotels.length; i++) {
if (this.hotels[i].name == name) {
this.selectedHotel = this.hotels[i];
}
}
}
onBook()
{
for (var i = 0; i < this.hotels.length; i++) {
if (this.hotels[i].name == this.selectedHotel.name) {
this.selectedHotel.rooms-=this.nrooms;
}
}
this.id_cnt++;
this.bookings.push(
{
id:this.id_cnt,
name:this.selectedHotel.name,
price:this.nrooms*this.ndays*this.selectedHotel.rmprice
}
)
this.nrooms=0;
this.ndays=0;
}
toggleDisplay()
{
this.display=!this.display;
}
}
解决方案
推荐阅读
- r - R Shiny中的SelectizeInput过滤
- javascript - threejs - 我的时间脚本的性能更好
- sql - 作为 Windows 服务运行时服务器失败
- azure - 如何将多个自定义域添加到托管静态网站的 Azure 存储帐户?
- python - 使用 SpaCy 进行语法依赖提取?
- python - 绘制 SVC 决策区域
- apache-flink - 是否可以将 apache ranger/atlas 与 apache flink 集成?
- python - Scrapy:在爬取之前检查 MongoDB 是否有重复项
- spring-boot - 使用与 Spring Boot 存储库相同的存储库方法返回不同的 Dto
- apache-flink - Apache Flink 检查点不断失败