diff --git a/packages/angular/src/directives/menu-toggle.ts b/packages/angular/src/directives/menu-toggle.ts
new file mode 100644
index 0000000000..3968f2a558
--- /dev/null
+++ b/packages/angular/src/directives/menu-toggle.ts
@@ -0,0 +1,114 @@
+import { Directive, HostListener, Input } from '@angular/core';
+
+
+import { MenuController } from '../providers/menu-controller';
+
+/**
+ * @name MenuToggle
+ * @description
+ * The `menuToggle` directive can be placed on any button to toggle a menu open or closed.
+ * If it is added to the [NavBar](../../toolbar/Navbar) of a page, the button will only appear
+ * when the page it's in is currently a root page. See the [Menu Navigation Bar Behavior](../Menu#navigation-bar-behavior)
+ * docs for more information.
+ *
+ *
+ * @usage
+ *
+ * A simple `menuToggle` button can be added using the following markup:
+ *
+ * ```html
+ *
+ * ```
+ *
+ * To toggle a specific menu by its id or side, give the `menuToggle`
+ * directive a value.
+ *
+ * ```html
+ *
+ * ```
+ *
+ * If placing the `menuToggle` in a navbar or toolbar, it should be
+ * placed as a child of the `` or ``, and not in
+ * the `` element:
+ *
+ * ```html
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * Title
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * Similar to ``, the `menuToggle` can be positioned using
+ * `start`, `end`, `left`, or `right`:
+ *
+ * ```html
+ *
+ *
+ *
+ * Title
+ *
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * See the [Toolbar API docs](../../toolbar/Toolbar) for more information
+ * on the different positions.
+ *
+ * @demo /docs/demos/src/menu/
+ * @see {@link /docs/components#menus Menu Component Docs}
+ * @see {@link ../../menu/Menu Menu API Docs}
+ */
+@Directive({
+ selector: '[menuToggle]',
+ host: {
+ '[hidden]': 'isHidden'
+ }
+})
+export class MenuToggle {
+
+ /**
+ * @hidden
+ */
+ @Input() menuToggle: string;
+
+
+ constructor(
+ private _menu: MenuController,
+ ) {
+
+ }
+
+ /**
+ * @hidden
+ */
+ @HostListener('click')
+ toggle() {
+ const menu = this._menu.get(this.menuToggle);
+ menu && menu.toggle();
+ }
+
+}
diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts
index 58c25e7b66..71305fe417 100644
--- a/packages/angular/src/index.ts
+++ b/packages/angular/src/index.ts
@@ -1,8 +1,11 @@
export { IonicAngularModule } from './module';
-/* Directives/Components */
+/* Components */
export { IonNavDelegate } from './components/ion-nav';
+/* Directives */
+export { MenuToggle } from './directives/menu-toggle';
+
/* Providers */
export { ActionSheetController, ActionSheetProxy } from './providers/action-sheet-controller';
export { AlertController, AlertProxy } from './providers/alert-controller';
diff --git a/packages/angular/src/module.ts b/packages/angular/src/module.ts
index 1aa75f480b..c1a06e3b15 100644
--- a/packages/angular/src/module.ts
+++ b/packages/angular/src/module.ts
@@ -15,6 +15,9 @@ import { TextValueAccessor } from './control-value-accessors/text-value-accessor
/* Components */
import { IonNavDelegate } from './components/ion-nav';
+/* Directives */
+import { MenuToggle } from './directives/menu-toggle';
+
/* Providers */
import { ActionSheetController } from './providers/action-sheet-controller';
import { AlertController } from './providers/alert-controller';
@@ -31,6 +34,7 @@ import { ToastController } from './providers/toast-controller';
declarations: [
BooleanValueAccessor,
IonNavDelegate,
+ MenuToggle,
NumericValueAccessor,
RadioValueAccessor,
SelectValueAccessor,
@@ -39,6 +43,7 @@ import { ToastController } from './providers/toast-controller';
exports: [
BooleanValueAccessor,
IonNavDelegate,
+ MenuToggle,
NumericValueAccessor,
RadioValueAccessor,
SelectValueAccessor,