不同组件中的垫菜单和按钮

2024-01-12

I have

<mat-menu #saveMenu="matMenu">...</mat-menu>

在应用程序保存文档组件中和

<app-save-document></app-save-document>
<button mat-icon-button [matMenuTriggerFor]="saveMenu">

在另一个组件中。

如果我在不同的组件中有 mat-menu 和带有 [matMenuTriggerFor] 的按钮,我可以做些什么让按钮看到菜单吗?

我现在有ERROR Error: mat-menu-trigger: must pass in an mat-menu instance.


好吧,如果你想做这样的事情:

<button mat-button [matMenuTriggerFor]="menu">Menu</button>
<other-component [matMenu]="menu"></other-component>
<mat-menu #menu="matMenu">
  <button mat-menu-item>Item 1</button>
  <button mat-menu-item>Item 2</button>
</mat-menu>

你可以编码<other-component>像这样:

import {Component,Input} from '@angular/core';
import {MatMenu} from '@angular/material/menu';

@Component({
  selector: 'other-component',
  template: `
    This button is in another component:
    <button [matMenuTriggerFor]="matMenu">Click here to open menu</button>
  `,
})
export class OtherComponent {
  @Input() matMenu: MatMenu;
}

你可以看到上面的例子在这方面工作堆栈闪电战演示 https://stackblitz.com/edit/httpsstackoverflowcoma4834389864331661.


另一种方法

另一种方法是(我认为这就是你想要的):你的触发按钮 is 在父级内部 (but 在孩子之外)和menu本身已定义在孩子里面成分。

父组件:

<button mat-button [matMenuTriggerFor]="childComponentMenu?.menu">
    Menu in other component
</button>
<child-component></child-component>
export class ParentComponent {
  @ViewChild(ChildComponent) childComponentMenu: ChildComponent;
}

子组件:

@Component({
  selector: 'child-component',
  template: `
    <mat-menu>
      <button mat-menu-item>Item 1 (inside other component)</button>
      <button mat-menu-item>Item 2 (inside other component)</button>
    </mat-menu>
  `,
})
export class ChildComponent {
  @ViewChild(MatMenu, {static: true}) menu: MatMenu;
}

另一种方法

另一种方法与上面的方法类似,但使用模板引用变量(注意exportAs在子组件的装饰器中):

父组件:

<button mat-button [matMenuTriggerFor]="x.menu">
    Menu in other component
</button>
<child-component #x="menuInOtherComponent"></child-component>

export class ParentComponent {
}

子组件:

@Component({
  selector: 'child-component',
  template: `
    <mat-menu>
      <button mat-menu-item>Item 1 (inside other component)</button>
      <button mat-menu-item>Item 2 (inside other component)</button>
    </mat-menu>
  `,
  exportAs: 'menuInOtherComponent',
})
export class ChildComponent {
  @ViewChild(MatMenu, {static: true}) menu: MatMenu;
}

Stackblitz 演示 https://stackblitz.com/edit/httpsstackoverflowcoma4834389864331662

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同组件中的垫菜单和按钮 的相关文章

随机推荐

  • Azure 个人访问令牌 API 中的 subjectDescriptor 是什么

    我正在尝试编写一个脚本来自动化 Azure DevOps 环境的某些方面 但我很难为特定用户返回 PAT 以便能够授权他们执行 API 调用 有人能给我一个关于 subjectDescriptor 是什么以及在哪里可以找到它的示例吗 我已读
  • VueJS - 模型绑定不适用于使用 jQuery 插件的输入

    我正在努力转换表单以利用 VueJS 该表单有一个使用 eonasdan bootstrap datetimepicker 的出生日期输入 http eonasdan github io bootstrap datetimepicker h
  • 为什么 Divi 短代码不能在 wp-json 中呈现?

    我正在尝试使用the content过滤器来处理 Divi 短代码 但短代码仍然出现 特别是 et pb section et pb column et pb text 如果有的话 add action rest api init func
  • 从 zip 文件加载 pickle 文件

    由于某种原因 我无法让 cPickle load 处理 ZipFile open 返回的文件类型对象 如果我对 ZipFile open 返回的文件类型对象调用 read 我可以使用 cPickle loads 例子 import zipf
  • Firebase 本地通知

    当 Firebase 回调时是否有可能触发本地通知 我猜我的线程有问题 Firebase setDispatchQueue dispatch get global queue DISPATCH QUEUE PRIORITY DEFAULT
  • 持久化 sha256 哈希对象?

    我需要一个 Python C C Java 实现 它可以暂停散列进度 and store文件的进度以这样的方式进行 可恢复的稍后从该文件中获取 无论上面列出的语言是用什么语言编写的 它都应该在 Python 中正常工作 建议您提供它以便与
  • 如何在 Flash 应用程序中创建退出按钮

    我正在创建一个 Flash 应用程序 该应用程序将导出到exe格式 它不会在浏览器中运行 我想在舞台内添加一个退出按钮 但我不知道如何使用 ActionScript 3 来做到这一点 我记得这是可能的fscommand在 ActionScr
  • Chef 中的动态角色属性

    我想要厨师食谱network interfaces为我的每个节点提供 IP 地址 网络掩码等的动态值 对我有用的是以下内容 db role rb 块1 override attributes network interfaces gt de
  • XBMC/KODI 添加插件时出错“结构不正确”

    我正在关注 KODI XBMC hello world 插件教程here http kodi wiki view HOW TO HelloWorld addon我从下载了完成的项目here https github com zag2me p
  • 实际 javascript 练习的资源 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 python 中精确复制 R 文本预处理

    我想使用 Python 预处理文档语料库 就像在 R 中一样 例如 给定一个初始语料库 corpus 我希望最终得到一个与使用以下 R 代码生成的语料库相对应的预处理语料库 library tm library SnowballC corp
  • 图像加载不适用于 IE 8 或更低版本

    我的目的是检查图像是否已成功加载 它在现代浏览器中运行良好 但在 IE8 或 7 中这是一个可怕的问题 这是示例代码 var img new Image url http something com images something gif
  • 按名称获取角色(discord.py 重写)

    我的 Discord 机器人有问题 我想创建一个具有支持者角色读取权限的文本通道 但我不想使用role id 因此 我尝试使用以下代码 但无法创建任何频道 supporter role discord utils get Supporter
  • 有没有办法观察 i18n 当前语言环境的变化?

    使用 i18n 时 当语言 区域设置发生变化时 如何调用函数 我应该使用 Vuex 还是vue i18n https kazupon github io vue i18n 有一种方法可以让我这样做吗 你可以看 i18n locale对于任何
  • Google Chrome:垂直滚动条在某些网页上消失,可能是由于奇怪的工具栏

    我的一位客户在查看我们网站上的某些页面时遇到问题 具体来说 它是垂直滚动条 在某些页面上消失 她使用的是 Google Chrome 正如下面的截图所示 Chrome 还有一个奇怪的工具栏 在第一张图片上 滚动没有问题 http i45 t
  • 仅显示上周创建的帖子

    我希望能够显示帖子并按几个标准对它们进行排序 首先是它们的投票数量 其次是它们的创建日期 我不希望显示一周以上的帖子 因此只显示上周的帖子 我尝试这样做 但它给了我一个 NilClass 与 2 比较失败的错误 我知道代码的工作原理只是按投
  • Gtk.CssProvider() 基于 ID 的选择器在 Gtk3 中如何工作?

    我已经断断续续地摆弄这个问题好几天了 但似乎无法解决可能出现的问题 本质上 我正在尝试使用 CSS 样式声明在 Gtk3 中设置一些 Gtk Widget 的样式 没有什么复杂的 只是尝试通过其 id 名称来定位特定元素 Gtk CssPr
  • 确定运行时 JVM 可执行文件的位置

    如何在运行时获取当前运行的 JVM 的可执行文件的位置 我想使用 ProcessBuilder 类将另一个 JVM 实例化为子进程 我知道有java home系统属性 但这并不指定 JVM 可执行文件的位置 我知道我可以做这样的事情来获取路
  • 如何让异步流返回两个数据源

    我有以下函数 它返回标准输出数据 作为异步流 该数据是由运行System Diagnostics Process 当前该方法中的所有内容都按预期工作 我可以用await foreach 循环 我得到由外部 exe 生成的每一行输出 priv
  • 不同组件中的垫菜单和按钮

    I have