gpt4 book ai didi

Angular2 dart DateTime 不输入保存?

转载 作者:行者123 更新时间:2023-12-03 04:05:06 25 4
gpt4 key购买 nike

我有一个 Angular2 Dart 应用程序,其中定义了以下类型。

class Event {
final int id;
DateTime startDate;
}

我现在想让用户输入一个新日期,所以我将此字段绑定(bind)到以下内容。
<div class="form-group">
<label for="start_date">Start Date</label>
<input type="text" class="form-control" required
[(ngModel)]="event.startDate"
ngControl="start_date"
#start_date="ngForm">
<div [hidden]="start_date.valid" class="alert alert-danger">
Start date is required
</div>
</div>

现在我很惊讶地看到用户可以输入无效的日期字符串,如果我例如做一个 print(event.startDate) 我得到这个无效的字符串。我的印象是 DateTime 变量是类型安全的,但它看起来就像一个普通的字符串。我错过了什么。我知道我需要添加验证器,但为什么我首先定义了一个类型?我至少希望它会爆炸:-)

那么您将如何正确输入日期呢?如果我将输入类型更改为“日期”,那么由于 DateTime 的时间部分,它甚至无法加载初始值。

最佳答案

所以我现在接受了 Günters 的建议,并通过以下结构解决了这个问题:

class Event {
final int id;
DateTime startDate;

String get startDateStr {
var formatter = new DateFormat('yyyy-MM-dd');
return formatter.format(startDate);
}

void set startDateStr(String date) {
startDate = DateTime.parse(date);
}
}

有了这个额外的属性,现在可以在 html 模板中编写以下内容:
<div class="form-group">
<label for="start_date">Start Date</label>
<input type="date" class="form-control" required
[(ngModel)]="event.startDateStr"
ngControl="start_date"
#start_date="ngForm">
<div [hidden]="start_date.valid" class="alert alert-danger">
Start date is required
</div>
</div>

这在我看来是最干净的并保留了 Event 类结构。如果有这样的共同模式,我仍然会感兴趣,如果是,请评论我的答案。

关于Angular2 dart DateTime 不输入保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39518996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com