角mydatepicker monthchange事件更新ui问题

如何解决角mydatepicker monthchange事件更新ui问题

我正在使用这个有角度的mydatepicker:https://github.com/kekeh/angular-mydatepicker

我所面临的问题是月度更改,它会发出此事件calendarViewChanged,并且我正在为api更改月份的可用日期调用api,但是在我得到api ui的响应之前,已经针对该月设置了ui,因此从api接收响应哪个日期启用和禁用,但我无法在上个月和下个月的更改中更新日历中的ui。以下是我从api获得的列表

     this.dayAvailabilityList = [
  { "date": 1577854800000,"month": month,"available": true,"dayOfMonth": 1,"dayName": "Wednesday" },{ "date": 1577941200000,"dayOfMonth": 2,"dayName": "Thursday" },{ "date": 1578027600000,"dayOfMonth": 3,"dayName": "Friday" },{ "date": 1578114000000,"dayOfMonth": 4,"dayName": "Saturday" },{ "date": 1578200400000,"dayOfMonth": 5,"dayName": "Sunday" },{ "date": 1578286800000,"dayOfMonth": 6,"dayName": "Monday" },{ "date": 1578373200000,"dayOfMonth": 7,"dayName": "Tuesday" },{ "date": 1578459600000,"dayOfMonth": 8,{ "date": 1578546000000,"dayOfMonth": 9,{ "date": 1578632400000,"dayOfMonth": 10,{ "date": 1578718800000,"dayOfMonth": 11,{ "date": 1578805200000,"dayOfMonth": 12,{ "date": 1578891600000,"dayOfMonth": 13,{ "date": 1578978000000,"dayOfMonth": 14,{ "date": 1579064400000,"dayOfMonth": 15,{ "date": 1579150800000,"dayOfMonth": 16,{ "date": 1579237200000,"dayOfMonth": 17,{ "date": 1579323600000,"dayOfMonth": 18,{ "date": 1579410000000,"dayOfMonth": 19,{ "date": 1579496400000,"dayOfMonth": 20,{ "date": 1579582800000,"dayOfMonth": 21,{ "date": 1579669200000,"dayOfMonth": 22,{ "date": 1579755600000,"dayOfMonth": 23,{ "date": 1579842000000,"dayOfMonth": 24,{ "date": 1579928400000,"dayOfMonth": 25,{ "date": 1580014800000,"available": false,"dayOfMonth": 26,{ "date": 1580101200000,"dayOfMonth": 27,{ "date": 1580187600000,"dayOfMonth": 28,{ "date": 1580274000000,"dayOfMonth": 29,{ "date": 1580360400000,"dayOfMonth": 30,{ "date": 1580446800000,"dayOfMonth": 31,"dayName": "Friday" }]

有什么方法可以在收到api响应时更新日历中的当前月份视图吗? 请帮忙。

下面是相同的代码

HTML

<form [formGroup]="myForm" #add="ngForm" (ngSubmit)="submit()">
    <div class="input-Box-container">
        <input class="form-control" style="float:none" 
            placeholder="Select a date" angular-mydatepicker
            #dp="angular-mydatepicker" name="myDate"
            formControlName="myDate" [options]="myDatePickerOptions"                 
            (calendarViewChanged)="onCalendarViewChanged($event)" 
            (dateChanged)="onDateChanged($event)" />
    </div>
</form>

英语JS

`

@ViewChild('dp',{static: true}) dp: AngularMyDatePickerDirective;
myDatePickerOptions : IAngularMyDpOptions  = {
    daterange:false,dateFormat: 'dd/mm/yyyy',inline : false,selectorWidth:'100%',closeSelectorOnDateSelect : false,closeSelectorOnDocumentClick : false,showSelectorArrow:false,disableuntil : {year :new Date().getFullYear(),month :new Date().getMonth()+ 1,day :new 
    Date().getDate()-1 },}

async setCalendarDates(dateList,month){
    
    this.availableDate = [];
    this.notAvailableDate = [];
    let copy : IAngularMyDpOptions  = this.getcopyOfOptions();
    copy.markDates =this.getMarkedDate(dateList,month);
    this.myDatePickerOptions = copy;
    await new Promise(resolve => setTimeout(resolve,3000));
    this.dp.openCalendar();
  }
  
  getMarkedDate(dateList,month) : any {

    for( var i=0 ; i<dateList.length; i++ ) {
    if(dateList[i].available){
        let dateAdd = {day : dateList[i].dayOfMonth,month : month,year : 2020};
        this.availableDate.push(dateAdd);
      }
    }

    for( var i=0 ; i<dateList.length; i++ ) {
      if(!dateList[i].available){
        let dateAdd = {day : dateList[i].dayOfMonth,year : 2020};
        this.notAvailableDate.push(dateAdd);
      }
    }

    let dates = [
      { dates: this.availableDate,color: 'green' },{ dates: this.notAvailableDate,color: 'red' },]
    console.log("Available Date",this.availableDate);
    console.log("Not Available Date",this.notAvailableDate);
    return dates;
  }

onCalendarViewChanged(event: IMyCalendarViewChanged) {
    console.log('onCalendarViewChanged(): Year: ',event);
    this.setDates(event.month);;
    this.setCalendarDates(this.dayAvailabilityList,event.month);
  }

onDateChanged(event: IMyDateModel) {
    console.log('onDateChanged(): ',event);
  }

getcopyOfOptions() {
    return JSON.parse(JSON.stringify(this.myDatePickerOptions));
  }

setDates( month : number ){
  this.dayAvailabilityList = 
                    [
                      {"date":1577854800000,"month":month,"available":true,"dayOfMonth":1,"dayName":"Wednesday"},{"date":1577941200000,"dayOfMonth":2,"dayName":"Thursday"},{"date":1578027600000,"dayOfMonth":3,"dayName":"Friday"},{"date":1578114000000,"dayOfMonth":4,"dayName":"Saturday"},{"date":1578200400000,"dayOfMonth":5,"dayName":"Sunday"},{"date":1578286800000,"dayOfMonth":6,"dayName":"Monday"},{"date":1578373200000,"dayOfMonth":7,"dayName":"Tuesday"},{"date":1578459600000,"dayOfMonth":8,{"date":1578546000000,"dayOfMonth":9,{"date":1578632400000,"dayOfMonth":10,{"date":1578718800000,"dayOfMonth":11,{"date":1578805200000,"dayOfMonth":12,{"date":1578891600000,"dayOfMonth":13,{"date":1578978000000,"dayOfMonth":14,{"date":1579064400000,"dayOfMonth":15,{"date":1579150800000,"dayOfMonth":16,{"date":1579237200000,"dayOfMonth":17,{"date":1579323600000,"dayOfMonth":18,{"date":1579410000000,"dayOfMonth":19,{"date":1579496400000,"dayOfMonth":20,{"date":1579582800000,"dayOfMonth":21,{"date":1579669200000,"dayOfMonth":22,{"date":1579755600000,"dayOfMonth":23,{"date":1579842000000,"dayOfMonth":24,{"date":1579928400000,"dayOfMonth":25,{"date":1580014800000,"available":false,"dayOfMonth":26,{"date":1580101200000,"dayOfMonth":27,{"date":1580187600000,"dayOfMonth":28,{"date":1580274000000,"dayOfMonth":29,{"date":1580360400000,"dayOfMonth":30,{"date":1580446800000,"dayOfMonth":31,"dayName":"Friday"}
                    ]
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?