ionic-framework - 我如何解决日期范围逻辑
问题描述
对不起,我的英语是 ionic 新手,正在尝试使用 ionic 4 制作 Todo 应用程序。对于 Todoes,我设置了 startDate 和 EndDate 但我想通过在选择开始日期后阻止用户来控制日期范围,他不会能够选择在开始日期之前的结束日期
我得到的错误“NewTodoPage.html:40 ERROR Error: Cannot find control with name: 'dateFrom'”
<ion-content>
<ion-row>
<ion-col size-sm="6" offset-sm="3">
<ion-item>
<ion-label position="floating">Title: </ion-label>
<ion-input type="text" autocomplete autocorrect formControlName="title"></ion-input>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size-sm="6" offset-sm="3">
<ion-item>
<ion-label position="floating">Description: </ion-label>
<ion-textarea rows="4" formControlName="description"></ion-textarea>
</ion-item>
</ion-col>
</ion-row>
<ion-row>
<ion-col size-sm="6" offset-sm="3">
<ion-item>
<ion-label position="floating">Starting at: </ion-label>
<ion-datetime
[min]="newTodo.dateFrom.toISOString()"
displayFormat=" DD MMM YYYY"
formControlName="dateFrom"
#startDateCtrl></ion-datetime>
</ion-item>
</ion-col>
<ion-col size-sm="6" offset-sm="3">
<ion-item>
<ion-label position="floating"> Ending at : </ion-label>
<ion-datetime
[min]="startDateCtrl.value"
displayFormat=" DD MMM YYYY "
formControlName="dateTo"></ion-datetime>
</ion-item>
</ion-col>
</ion-row>
解决方案
import { Component, OnInit, Input } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { TacheService } from '../tache.service';
import { Router } from '@angular/router';
import { LoadingController } from '@ionic/angular';
import { Tache } from '../tache.model';
@Component({
selector: 'app-new-todo',
templateUrl: './new-todo.page.html',
styleUrls: ['./new-todo.page.scss'],
})
export class NewTodoPage implements OnInit {
form: FormGroup;
newTodo: Tache;
constructor(
private tacheService: TacheService,
private router: Router,
private loaderCtrl: LoadingController) { }
ngOnInit() {
// add formGroup that takes a javascript object
this.form = new FormGroup({
title: new FormControl(null, {
updateOn: 'blur',
validators: [Validators.required]
}),
description: new FormControl(null, {
updateOn: 'blur',
validators: [Validators.required, Validators.maxLength(500)]
}),
dateFrom: new FormControl(null, {
updateOn: 'blur',
validators: [Validators.required]
}),
dateTo: new FormControl(null, {
updateOn: 'blur',
validators: [Validators.required]
})
});
}
getDummyDate() {
return new Date();
}
onCreateTodo() {
if (!this.form.valid) {
return;
}
this.loaderCtrl.create(
{message: 'Creation en cour ...'}
).then(loadingEl => {
loadingEl.present();
this.tacheService.addTache(
this.form.value.title,
this.form.value.description,
new Date(this.form.value.dateFrom),
new Date(this.form.value.dateTo)
)
.subscribe(() => {
loadingEl.dismiss();
this.form.reset();
this.router.navigate(['/tache/tabs/todo']);
// console.log('Ajout d\'un nouveau Todo'))
});
});
}
}
推荐阅读
- python - 我有一个要下载的 .mp4 文件的链接。但在我下载它之前,我希望它被压缩。有什么建议吗?
- node.js - 如何使用 json2csv 创建文件并将其上传到 Firebase 存储
- scala - 以日期为键在 Seq 上滚动总和
- neo4j - 如何使用 Cypher 递归更新项目计划图
- reactjs - 移动菜单效果扩展到桌面视图
- css - 如何 XHTML-CSS 盒子模型
- python - Stripe create customer for one time charge
- react-native - 导航到同一屏幕时不会触发 React Navigation v4 生命周期事件
- xpath - Xpath 获取文本
- node.js - 使用 Firebase 云功能验证 Firebase 应用中是否存在电话号码