从控制器关闭角度材料菜单

时间:2017-08-17 12:14:27

标签: angular angular-material2

听起来有点奇怪,但我无法从控制器上关闭Angular Material菜单。

按钮开启菜单:

<md-icon class="add-note__icon" [mdMenuTriggerFor]="paletteMenu">
    palette
</md-icon>

菜单:

<md-menu #paletteMenu="mdMenu">
  <div
    (click)="setColor($event, 'white')"
    mdTooltip="White"
  ></div>
  ...
</md-menu>

在我的控制器中,我引用了我的菜单:

@ViewChild('paletteMenu') menu: any;

应关闭它的功能:

setColor(event, color) {
  event.stopPropagation();
  this.menu.closeMenu();
}

每次点击其中一个选项时,都会收到错误消息:

TypeError: this.menu.closeMenu is not a function

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

closeMenu()MdMenuTrigger的函数,而不是MdMenu,这就是错误发生的原因。在您的图标中为mdMenuTrigger创建参考,并在组件代码中使用它。

HTML:

<md-icon class="add-note__icon"
         #paletteMenuTrigger="mdMenuTrigger"
         [mdMenuTriggerFor]="paletteMenu">
    palette
</md-icon>

TS:

export class SelectFormExample {

  @ViewChild('paletteMenuTrigger') menu: any;

  setColor(event, color) {
    event.stopPropagation();
    this.menu.closeMenu();
  }
}

API