diff --git a/src/components/content/content.ts b/src/components/content/content.ts
index 761910d04c..7e0f9cc7a4 100644
--- a/src/components/content/content.ts
+++ b/src/components/content/content.ts
@@ -442,6 +442,45 @@ export class Content extends Ion {
}
}
+ /**
+ * Tell the content to recalculate its dimensions. This should be called
+ * after dynamically adding headers, footers, or tabs.
+ *
+ * ```ts
+ * @Component({
+ * template: `
+ *
+ *
+ * Main Navbar
+ *
+ *
+ * Dynamic Toolbar
+ *
+ *
+ *
+ *
+ *
+ * `})
+ *
+ * class E2EPage {
+ * @ViewChild(Content) content: Content;
+ * showToolbar: boolean = false;
+ *
+ * toggleToolbar() {
+ * this.showToolbar = !this.showToolbar;
+ * this.content.resize();
+ * }
+ * }
+ * ```
+ *
+ */
+ resize() {
+ nativeRaf(() => {
+ this.readDimensions();
+ this.writeDimensions();
+ });
+ }
+
/**
* @private
* DOM READ
diff --git a/src/components/content/test/basic/index.ts b/src/components/content/test/basic/index.ts
index 55ac8bb4f4..1686469c15 100644
--- a/src/components/content/test/basic/index.ts
+++ b/src/components/content/test/basic/index.ts
@@ -1,5 +1,5 @@
-import {Component} from '@angular/core';
-import {ionicBootstrap} from '../../../../../src';
+import { Component, ViewChild } from '@angular/core';
+import { Content, ionicBootstrap } from '../../../../../src';
@Component({
@@ -50,7 +50,14 @@ class Page1 {
templateUrl: 'main.html'
})
class E2EPage {
+ @ViewChild(Content) content: Content;
page1 = Page1;
+ showToolbar: boolean = false;
+
+ toggleToolbar() {
+ this.showToolbar = !this.showToolbar;
+ this.content.resize();
+ }
}
diff --git a/src/components/content/test/basic/main.html b/src/components/content/test/basic/main.html
index 3525d4673e..20d0efeb9f 100644
--- a/src/components/content/test/basic/main.html
+++ b/src/components/content/test/basic/main.html
@@ -8,11 +8,16 @@
+
+ Dynamic Toolbar
+
This page has a header and content but no footer or tabs.
+
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi scelerisque dolor lacus, ut vehicula arcu dapibus id. Morbi iaculis fermentum blandit. Curabitur tempus, ante et vehicula tempor, urna velit rutrum massa, quis suscipit purus lacus eget est. Sed nisi nulla, tempus id dictum a, cursus ut felis. Aliquam orci magna, rutrum nec tempor ac, fermentum quis eros. Sed ullamcorper felis sit amet tristique sagittis. Nullam sed tempus mi. Morbi sit amet lacinia leo. Nunc facilisis orci id consectetur dignissim. Integer dictum consectetur enim. Vivamus auctor, turpis ut eleifend pharetra, purus magna mattis arcu, vel pharetra tellus orci eget ex. Integer blandit posuere vehicula. Ut ipsum lorem, efficitur vitae eleifend tincidunt, fermentum nec lacus. Ut nec fermentum dui.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi scelerisque dolor lacus, ut vehicula arcu dapibus id. Morbi iaculis fermentum blandit. Curabitur tempus, ante et vehicula tempor, urna velit rutrum massa, quis suscipit purus lacus eget est. Sed nisi nulla, tempus id dictum a, cursus ut felis. Aliquam orci magna, rutrum nec tempor ac, fermentum quis eros. Sed ullamcorper felis sit amet tristique sagittis. Nullam sed tempus mi. Morbi sit amet lacinia leo. Nunc facilisis orci id consectetur dignissim. Integer dictum consectetur enim. Vivamus auctor, turpis ut eleifend pharetra, purus magna mattis arcu, vel pharetra tellus orci eget ex. Integer blandit posuere vehicula. Ut ipsum lorem, efficitur vitae eleifend tincidunt, fermentum nec lacus. Ut nec fermentum dui.