使用 angular 飞镖将日期绑定到 inpubtbox

bind date to inpubtbox with angular dart

我正在构建一个网络应用程序,其中包含带有日期的输入框。如何将数据绑定到我的后台代码? 我试过直接这样做,但我猜输入框只能处理字符串,所以制作了一个转换为字符串的方法等等。

<div>
    <label>start date: </label>
    <input [(ngModel)]="item.stringStartDate" placeholder="start date" type="date">
</div>


void set startDate(DateTime startDate)
{
    _startDate = startDate;
}

void set stringStartDate(String startDate)
{
    this.startDate = parseDate(startDate);
}


static DateTime parseDate(String formattedString)
{
    final RegExp r = new RegExp(
        r'^(\d\d)-?(\d\d)-?([+-]?\d{4,6})');

    Match match = r.firstMatch(formattedString);
    if (match != null)
    {
        int years = int.parse(match[3]);
        int month = int.parse(match[2]);
        int day = int.parse(match[1]);

        return new DateTime(years, month, day);
    }
    else
    {
        throw new FormatException("Invalid date format", formattedString);
    }
}

static String dateToString(DateTime date){
    if (date == null)
        return null;

    String ret = "${date.year}/";

    if (date.month < 10)
        ret+="0";
    ret+="${date.month}/";

    if (date.day < 10)
        ret += "0";
    ret+="${date.day}";

    return ret;
}

应该用-分隔而不是/

您可以使用 toIso8601Stringsubstring

DateTime _date = new DateTime.now();

String get date => _date.toIso8601String().substring(0, 10);

void set date(value) {
  if (value is DateTime) {
    _date = value;
  } else if (value is String) {
    _date = DateTime.parse(value);
  }
}