由于我从JavaScript转换为TypeScript(版本2.1.5),因此以下用于过滤日期选择的代码不再起作用。我想我知道为什么,但是目前我还没有找到好的解决方法。

这是我的两个日期选择器:从和到:

                             <div class="form-group">
                                <label class="label label-letter-spacing">From </label>
                                <div class='input-group date' id='datepickerFrom'>
                                    <md-datepicker ng-model="vm.dateFrom"></md-datepicker>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="label label-letter-spacing">To </label>
                                <div class='input-group date' id='datepickerTo'>
                                    <md-datepicker ng-model="vm.dateTo" md-date-filter="vm.onlyGreaterThanFromDate" ></md-datepicker>
                                </div>
                            </div>


在Controller.ts中,我有:

        dateTo: Date;
        dateFrom: Date;

        onlyGreaterThanFromDate(date) {
           if (this.dateFrom != undefined )
               return (date.getTime() > this.dateFrom.getTime());
        };


在浏览器(chrome)中调试时,我注意到执行此方法时,上下文已更改,不再代表我的Controller,而是CalendarCtrl,因此this.dateFrom是undefined。

我尝试了一些调整,以静态或私有方式设置dateFrom属性,但两者都不起作用。

我仍在搜索,期待阅读您对此的评论/想法。 :) 谢谢

最佳答案

非常感谢曹操的回答。那是正确的代码,我学会了TypeScript中的有用功能:)

所以我重新发布解决方案:


  在Typescript中,您可以使用箭头功能保留上下文。
  类似于:onlyGreaterThanFromDate =(date)=> {如果
  (this.dateFrom!= undefined)返回(date.getTime()>
  this.dateFrom.getTime()); };

09-12 02:14