function applyDateChange() {
    $timeout.flush();
    $material.flushOutstandingAnimations();

    // Internally, the calendar sets scrollTop to scroll to the month for a change.
    // The handler for that scroll won't be invoked unless we manually trigger it.
    var activeViewController = calendarMonthController || calendarYearController;
    if (activeViewController) {
      angular.element(activeViewController.calendarScroller).triggerHandler('scroll');
    }

    // Need this to handle the nextTick when setting first scroll.
    $timeout.flush();
  }
To apply a change in the date, a scope $apply() AND a manual triggering of animation
callbacks is necessary.