2

I'am try to add custom class to some dates (array of dates) any suggestions? (highlight some dates - events)

html:

  <mat-card-content>
<div class="date-picker">
  <mat-calendar [selected]="selectedDates" (selectedChange)="selectedDates = $event" #calendar>
  </mat-calendar>
</div>

ts:

this.selectedDates = [new Date('2014-08-28T11:13:59'), new Date('2014-07-27T11:13:59')];

any ideas?

Marko Lovás
  • 21
  • 1
  • 3
  • There was quite similar question asked before https://stackoverflow.com/questions/48888729/angular-2-material-datepicker-highlight-special-days – Boris Sokolov May 28 '18 at 15:03

1 Answers1

0

html:

<mat-calendar [minDate]="minDate" [maxDate]="maxDate" [selected]="selectedDates" (selectedChange)="selectedChange($event)" [headerComponent]="displayMonth()" [startAt]="startDate"></mat-calendar>

.ts:

    import { Component, OnInit, Input, OnChanges, ViewEncapsulation, ElementRef, Renderer2 } from '@angular/core';

constructor(
    private elRef: ElementRef,
    private renderer: Renderer2
) {}

        displayMonth() {
            let HeaderElsClass = this.elRef.nativeElement.getElementsByClassName('mat-calendar-body-cell');
            let orderDate = this.convertDate.dateFormat(this.tempOrdersDate, 'MMMM D, YYYY'); 
            // tempOrderDate is epoch array, i convert from epoch to date

            for(let index in HeaderElsClass) {
              if(typeof HeaderElsClass[index] === 'object') {
                let headerClass = HeaderElsClass[index].getAttribute('aria-label');

                orderDate.find(each => {
                  if(each === headerClass) {
                    this.renderer.addClass(HeaderElsClass[index], 'mat-calendar-body-active');
                    this.renderer.setStyle(HeaderElsClass[index], 'font-weight', '900');
                  }
                  return false;
                })
              }
            }
          }
L1ghtk3ira
  • 3,021
  • 6
  • 31
  • 70
Abudy Gold
  • 11
  • 1