3

我的角度应用程序中有两个日期输入字段(fromDate 和 toDate)。我还有 3 个按钮“昨天”、“上周”、“上个月”。用户可以选择“从”和“到”日期,也可以按其中一个按钮。

单击按钮后,必须正确填写从和到日期字段。我已将 ngModel 指令应用于这两个日期输入字段。这是我的 HTML

        <div class="col-sm-4 filter-box">
            <label>Filter by Date</label>
            <div class="row content-even" >
                <button class="btn btn-primary btn-sm my-1" (click)="yesterdayDateFilter()">Yesterday</button>
                <button class="btn btn-primary btn-sm my-1">Last Week</button>
                <button class="btn btn-primary btn-sm my-1">Last Month</button>                    
            </div>
            <div class="row mt-1 content-even" >
                <div class="form-group">
                    <label for="fromDate">From </label>
                    <input type="date" id="fromDate" [(ngModel)]="fromDate" name="fromDate">
                    {{fromDate}}
                </div>                    
                <div class="form-group">
                    <label for="toDate">To </label>
                    <input type="date" id="toDate" [(ngModel)]="toDate" name="toDate">
                    {{toDate}}
                </div>
            </div>
        </div>

现在,当按下按钮时,我不确定如何填写日期字段。例如,当我按下昨天按钮时,我希望我的昨天日期过滤器()函数能够适当地更改从日期和到日期。这是我昨天DateFilter() 的代码

yesterdayDateFilter(){        
let yesterday = new Date();
yesterday.setDate(yesterday.getDate()-1);

this.fromDate =  new Date(this.datePipe.transform(yesterday, 'yyyy-MM-dd'));
console.log(this.fromDate); }

我正在使用角度日期管道将日期转换为合适的格式

从“@angular/common”导入 { DatePipe };

现在,当我单击昨天按钮时,起始日期字段保持不变,但输入字段旁边的 fromDate 值(模板中的 {{fromDate}} )以这种格式显示

2018 年 4 月 5 日星期四 05:30:00 GMT+0530 (IST)

我一直在尝试不同的方法来实现所需的功能,但一直没有找到方法。帮助?谢谢你。

4

1 回答 1

8
<input type="date" id="fromDate" [(ngModel)]="fromDate" name="fromDate">

“日期”类型不包含日期时间。如果您打算使用类型为日期的输入,那么您可以使用以下代码来实现它。在将转换后的值分配给模型时,您不需要将转换后的值解析为 Date。

yesterdayDateFilter(){        
   let yesterday = new Date();
   yesterday.setDate(yesterday.getDate()-1);
   this.fromDate = this.datePipe.transform(yesterday, 'yyyy-MM-dd');
   this.toDate=this.datePipe.transform(new Date(), 'yyyy-MM-dd');
   console.log(this.fromDate); 
}

演示

如果您想同时显示日期和时间,那么您应该使用以下库。

ng-pick-datetime

我希望这能帮到您。如果您有任何问题或疑问,请告诉我。

于 2018-04-06T09:54:24.557 回答