diff --git a/src/demo-app/datepicker/datepicker-demo.html b/src/demo-app/datepicker/datepicker-demo.html
index 8fbf267ed44e..3abeedf1d183 100644
--- a/src/demo-app/datepicker/datepicker-demo.html
+++ b/src/demo-app/datepicker/datepicker-demo.html
@@ -154,3 +154,13 @@
Datepicker with custom header
+
+Datepicker with custom header extending the default header
+
+
+ Custom calendar header extending default
+
+
+
+
+
diff --git a/src/demo-app/datepicker/datepicker-demo.ts b/src/demo-app/datepicker/datepicker-demo.ts
index a1077573c578..142cb649a183 100644
--- a/src/demo-app/datepicker/datepicker-demo.ts
+++ b/src/demo-app/datepicker/datepicker-demo.ts
@@ -12,10 +12,12 @@ import {
Component,
Host,
Inject,
+ ViewChild,
+ Optional,
OnDestroy
} from '@angular/core';
import {FormControl} from '@angular/forms';
-import {MatCalendar} from '@angular/material';
+import {MatCalendar, MatCalendarHeader} from '@angular/material';
import {DateAdapter, MAT_DATE_FORMATS, MatDateFormats, ThemePalette} from '@angular/material/core';
import {MatDatepickerInputEvent} from '@angular/material/datepicker';
import {Subject} from 'rxjs';
@@ -53,6 +55,7 @@ export class DatepickerDemo {
// pass custom header component type as input
customHeader = CustomHeader;
+ customHeaderNgContent = CustomHeaderNgContent;
}
// Custom header component for datepicker
@@ -98,3 +101,27 @@ export class CustomHeader implements OnDestroy {
this._dateAdapter.addCalendarYears(this._calendar.activeDate, 1);
}
}
+
+@Component({
+ moduleId: module.id,
+ selector: 'customer-header-ng-content',
+ template: `
+
+
+
+ `
+})
+export class CustomHeaderNgContent {
+
+ @ViewChild(MatCalendarHeader)
+ header: MatCalendarHeader;
+
+ constructor(@Optional() private _dateAdapter: DateAdapter) {}
+
+ todayClicked() {
+ let calendar = this.header.calendar;
+
+ calendar.activeDate = this._dateAdapter.today();
+ calendar.currentView = 'month';
+ }
+}
diff --git a/src/demo-app/demo-app/demo-module.ts b/src/demo-app/demo-app/demo-module.ts
index ba633e837b0d..a1bf00cfe17d 100644
--- a/src/demo-app/demo-app/demo-module.ts
+++ b/src/demo-app/demo-app/demo-module.ts
@@ -25,7 +25,7 @@ import {CardDemo} from '../card/card-demo';
import {CheckboxDemo, MatCheckboxDemoNestedChecklist} from '../checkbox/checkbox-demo';
import {ChipsDemo} from '../chips/chips-demo';
import {ConnectedOverlayDemo} from '../connected-overlay/connected-overlay-demo';
-import {CustomHeader, DatepickerDemo} from '../datepicker/datepicker-demo';
+import {CustomHeader, CustomHeaderNgContent, DatepickerDemo} from '../datepicker/datepicker-demo';
import {DemoMaterialModule} from '../demo-material-module';
import {ContentElementDialog, DialogDemo, IFrameDialog, JazzDialog} from '../dialog/dialog-demo';
import {DrawerDemo} from '../drawer/drawer-demo';
@@ -92,6 +92,7 @@ import {DragAndDropDemo} from '../drag-drop/drag-drop-demo';
ConnectedOverlayDemo,
ContentElementDialog,
CustomHeader,
+ CustomHeaderNgContent,
DatepickerDemo,
DemoApp,
DialogDemo,
@@ -138,6 +139,7 @@ import {DragAndDropDemo} from '../drag-drop/drag-drop-demo';
entryComponents: [
ContentElementDialog,
CustomHeader,
+ CustomHeaderNgContent,
DemoApp,
ExampleBottomSheet,
IFrameDialog,
diff --git a/src/lib/datepicker/calendar-header.html b/src/lib/datepicker/calendar-header.html
index 59a5a1bf8aa9..8c577dcc4f60 100644
--- a/src/lib/datepicker/calendar-header.html
+++ b/src/lib/datepicker/calendar-header.html
@@ -10,6 +10,8 @@
+
+