【发布时间】:2018-11-09 10:30:35
【问题描述】:
我正在使用 angular5 ,我有两个类型为 date 的输入。 如果第一个日期输入大于第二个日期输入,我会尝试不验证表单。
所以有两种情况:
- 当 dateOne>dateTwo 向用户显示错误消息时。
- 当日期一 用户可以提交表单。
这是我尝试做的代码:
这是 .html 文件:
<div class="modal-body">
<form [formGroup]="form" (ngSubmit)="addProjecToClients()">
<div class="form-group row">
<label class="col-sm-5 col-form-label">Choisir un client : </label>
<div class="col-sm-6">
<ng-select *ngIf="_listClients"
[items]="_listClients"
bindLabel ="nom"
bindValue ="id"
[(ngModel)]="selectedPersonId"
formControlName="selectedPersonId"
>
</ng-select>
</div>
</div>
<label class="col-sm-5 col-form-label">Information liées au contrat : </label>
<div class="form-group row">
<label class="col-sm-5 col-form-label" >Date one : </label>
<div class="col-sm-6">
<input type="date" class="form-control form-control-sm"
placeholder=".form-control-sm" [(ngModel)]="dateOne"
formControlName="dateOne">
</div>
</div>
<div class="form-group row">
<label class="col-sm-5 col-form-label" for="input-small">Date two : </label>
<div class="col-sm-6">
<input type="date" id="input-small" name="input-small" class="form-control form-control-sm"
placeholder=".form-control-sm" [(ngModel)]="dateTwo"
formControlName="dateTwo">
<span style="color:red" *ngIf="validation()">DateTwo must be greater than dateone</span>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" [disabled]="!form.valid" >Save changes</button>
</form>
这是 .ts 文件:
export class ProjectsComponent implements OnInit {
dateOne:new Date() ;
dateTwo:new Date();
ngOnInit() {
this.doSearch();
this.dateOne= null;
this.dateTwo= null;
this.form = this.formBuilder.group({
dateOne: ['', Validators.required],
dateTwo: ['', Validators.required],
selectedPersonId: ['', Validators.required]
});
}
validation(){
if(this.dateOne && this.dateTwo){
if(this.dateOne.getTime() < this.dateTwo.getTime()){
return false;
}
else
return true;
}
}
}
但是我收到了这个错误:
ERROR TypeError: this.dateOne.getTime is not a function
at ProjectsComponent.validation (projects.component.ts:65)
at Object.eval [as updateDirectives] (ProjectsComponent.html:89)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:14638)
at checkAndUpdateView
【问题讨论】:
-
嗯,在 ngOnInit 中,您将日期设置为空,不是吗?
-
是的,因为我不希望在我选择 dateOne 和 dateTwo 之前出现错误消息,这就是我将日期设置为 null 的原因。
-
你能把整个问题提取到我们可以重现的地方吗?
-
new Date(this.dateOne).getTime() 解决了这个问题,谢谢:)