将 Cdk Overlay 放置在 Angular/Elements Web 组件内

2024-07-03

我有一个更复杂的 Angular 应用程序,我想将其部署为 Angular/elements Web 组件。该应用程序使用 mat-dialog,并且 Web 组件也不会占用 100% 的浏览器窗口大小。 我的问题是 mat-dialog 的 cdk-overlay 默认添加到 html 页面的正文中,并且我的对话框在 Web 组件之外打开。

我想将覆盖层放置在 web 组件内部,这样它就不会干扰组件外部的 html。

我尝试提供一个自定义 OverlayContainer,如第一个答案中所述:将 MatDialog 弹出窗口添加到 Angular Root 而不是主体 https://stackoverflow.com/questions/52763285/add-matdialog-popup-to-angular-root-and-not-to-body/61074576#61074576

然而,我的角度应用程序没有引导,因为我使用角度/元素来构建网络组件,因此不使用模块引导。我的自定义 OverlayContainer 只是没有使用。

有谁知道这个问题的解决方案?

谢谢你!


我也有类似的情况。我使用 ShadowDom 封装将我的组件之一导出为自定义 Web 组件(“Angular Elements”)。问题是来自使用页面的样式仍然会泄漏到对话框、日期选择器等中,因为覆盖层被添加到正文中,而不是影子根中。

我找到了您链接的解决方案 https://stackoverflow.com/questions/52763285/add-matdialog-popup-to-angular-root-and-not-to-body/61074576#61074576工作得很好,有一些变化:

  1. Use position: fixed代替position: absolute所以对话框将保持在屏幕中央。
  2. 就像是document.querySelector('#angular-app-root')当我将它放在影子根内的组件中时,似乎没有找到我的元素。相反,我最终得到了类似的东西document.querySelector('my-exported-web-component')?.shadowRoot?.querySelector('#angular-app-root');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Cdk Overlay 放置在 Angular/Elements Web 组件内 的相关文章

  • 组件是 2 个模块声明的一部分

    我尝试构建一个 ionic 2 应用程序 当我在浏览器中使用离子服务尝试该应用程序或在模拟器上启动它时 一切正常 但是当我每次尝试构建它时都会出错 ionic app script tast build Error Type AddEven
  • Angular2 属性在类型上不存在

    我正在尝试在登录过程后获取我的连接用户模型 首先 在 CanActivate 防护使用用户 JSON 对象检查本地存储并发现它为 null 后 用户重定向到 login URL 然后用户登录并重定向回根 URL 在连接过程中 我使用 Aut
  • Angular - 如何取消从“后退”按钮触发的路线更改?

    在我的应用程序中 我想在用户点击后退按钮时显示提示消息框或模式 我可以使用 onPopState 事件 但它不会阻止用户向后导航 到目前为止 我有这个 window onpopstate event gt event preventDefa
  • 如何在 Angular Material 中将图标放入占位符中?

    我正在尝试将图标放入占位符中 我尝试了这段代码
  • Angular Material 7 Datepicker:禁用多年视图

    我使用 angular material 7 0 0 rc 0 中的 MatDatepicker 并制作了一个复杂的过滤器 将时间选择器中的每个可见日期与包含大约 200 或 300 个值的数组中的每一天进行比较 每次我将日期选择器切换到多
  • 具有传输状态的 Angular 通用 flickring

    我使用 Angular 7 和 NodeJS Express 作为后端 API 我使用 Angular Universal 进行服务器端渲染以实现 SEO 角度 SSR 网站闪烁后 我使用基于 JWT 令牌的身份验证 并在每个 Http 请
  • 如何获取 Angular 5 组件元素的位置?

    在 5 角分量中 我有一个table 我需要创建一些类似叠加多个div上面几个td的 获得这些职位的最佳方法是什么td位于表格中 以便我可以放置其他元素 我目前正在尝试使用类似的东西 ViewChild table tableElement
  • 使用按键选择 PrimeNG 表上的行

    我正在使用 PrimeNG 表 并尝试选择pSelectableRow通过按键 我有一个全局搜索输入 它将过滤表的所有结果 当用户完成搜索时 我希望他们能够单击键盘上的按钮并从过滤的选项中选择行 目前 如果用户正在搜索并且输入框获得焦点 则
  • Angular:无法通过路由器传递对象?

    我一直在努力寻找一个简单的解决方案 我有一个显示项目列表的 for 循环 单击其中一项会将您引导至详细组件 我只希望所选项目在详细组件中可用 由于某种原因 没有简单的解决方案 据我所知 我希望会有这样的事情 这就是我想要的 但是 这当然行不
  • 为测试床提供“entryComponents”

    我有一个组件 它接收组件的组件类以动态创建为子组件 let componentFactory this componentFactoryResolver resolveComponentFactory componentToCreate t
  • 如何在 IntelliJ 中运行单个量角器测试?

    我开发了一个 Angular 应用程序并使用 Protractor 进行 e2e 测试 在 Intellij 终极版 中 我为我的测试创建了运行 调试配置 如果我想运行所有测试 这很好用 但是我如何才能只运行单个规范文件或单个测试用例呢 我
  • 如何在 Typescript 类中创建 Angular 5 HttpClient 实例

    我正在编写一个包含 httpClient 的基类 它用于进行 REST api 调用 如果在构造函数中定义 则 httpClient 变量设置正确 但在私有变量中未定义 这是我的示例代码 Injectable export class My
  • 从深度嵌套的目录结构导入模块

    导入不在同一文件夹中或周围的模块是相当麻烦的 你必须不断地数 就像下面的例子一样 import AnswersService AddAnswerModel Answer from BackendServices AnswersService
  • 如何使用@ngrx/store获取State对象的当前值?

    我的服务类在调用 Web 服务之前需要获取一个名为dataForUpdate从我的州 目前 我正在这样做 constructor public store Store lt AppState gt public APIService API
  • Angular 2更改数据时光标在文本框末尾跳转

    名称字段有一些限制 因此我尝试使用如下指令验证名称字段 在指令内部 我使用正则表达式来检查有效名称 然后使用将有效名称替换为文本框valueAccessor writeValue newVal 这里的问题是当我尝试在文本框中键入某个单词的中
  • 使用 NgModel 绑定将数字变成字符串

    我不明白 Typescript 和 Angular 的这种行为 我的组件 html
  • 向 Angular 应用程序添加多个 HTTP 拦截器

    如何向 Angular 4 应用程序添加多个独立的 HTTP 拦截器 我尝试通过扩展来添加它们providers具有多个拦截器的数组 但真正执行的只有最后一个 Interceptor1被忽略 NgModule declarations im
  • 如何在 Angular Material 应用程序的 div 元素中设置背景图像?

    我知道有人问过这个问题 但没有一个解决方案有效 我有以下 html 如果使用注释的 img 元素 我可以显示图像 img src assets utgmap jpg 并注释掉以下 div 元素 但是我想要 div 的背景图像 但它不起作用
  • 角度错误:没有 NgControl 的提供者

    我正在创建一个实现 ControlValueAccessor 的组件 以在响应式表单中使用 它只是输入元素的包装器 上面有一些管道 我注入了 NgControl 以便检索有效 无效状态并将它们传播到内部输入元素 当在另一个输入中找到输入值时
  • Electron 应用程序与 Angular 2 重新加载问题[重复]

    这个问题在这里已经有答案了 我正在使用 Angular 2 开发 Electron 桌面应用程序 一切都启动得很好并且按预期工作 但是当我重新加载应用程序时它失败了 看来是路由的问题 如果没有路由 应用程序将很好地重新加载并显示所做的更改

随机推荐

  • 无法创建带有 nil 模型错误的 NSPersistentStoreCoordinator

    我有一个运行完美的 coreData 数据模型文件 由于一些特殊要求 我deleted旧的数据模型文件并创建另一个数据模型文件完全相同的实体 有实体没有变化来自之前的数据模型 我已将其作为不同的捆绑并从该包中引用它 用于创建 Managed
  • 跨多个子域使用 Apache mod_auth 进行单点登录?

    我有一个域和一组需要身份验证才能访问的子域 我目前正在使用 mod auth 在 domain tld 级别对用户进行身份验证 mod auth basic 我的目标是域和所有子域之间的单点登录 这些凭据是否会自动延续到子域 或者通过简单的
  • 如何在 Intellij IDEA 中的实时模板中设置变量的默认值?

    Intellij IDEA 中的实时模板可能存在一些误解 我的意思是模板中变量的默认值 假设我们有这个实时模板 我在这里期望的是 当调用此模板时 类型jqon并按TAB 我将看到已输入的默认值 我可以更改或保留原样 像这样 但不是 我有空字
  • 创建代表“今天”的 NodaTime LocalDate

    创建代表 今天 的 LocalDate 实例的推荐方法是什么 我原以为 LocalDate 类中有一个静态的 Now 或 Today 属性 但没有 我当前的方法是使用 DateTime Now var now DateTime Now Lo
  • 使用sql删除重复行

    我正在尝试从 mysql 表中删除重复的行 我尝试了多个查询 但不断收到此错误 1093 You can t指定目标表 usa city 以在 FROM 子句中进行更新 该表如下所示 usa city id pk id state city
  • 是否可以更改默认的 html5 视频皮肤/颜色

    是否可以更改默认 html5 视频播放器的颜色或完整皮肤
  • WebView 和 SSL 证书

    我在使用 Android WebView 加载受 SSL 保护的网页时遇到问题 我总是收到如下错误 onReceivedSslError primary error 3 certificate Issued to CN intranet
  • 如何使用 Knockout 和自定义绑定将 JSON DateTime 转换为可读的日期和时间

    我将 KnockoutJS 与映射插件一起使用 除了 DateTime 字段之外 一切都运行良好 该字段被序列化为刻度 如下所示 Date x 其中 x 刻度 我会怎样 1 将日期对象解析为人类可读的形式 2 将其从自定义绑定返回到模型中的
  • Pip要求输出全局包

    我的 django 项目有一个虚拟环境 但是当我点击pip freeze 我得到的一定是一个全局站点包列表 包括太多的包 比如 ubuntu 包和很多不相关的东西 无论 virtualenv 是否处于活动状态 都会发生这种情况 我的站点包列
  • Angular 2:NgbModal 在视图中嵌入

    假设我有这样的模态模板 div class modal header h3 h3 div div class modal body div
  • Javascript - window.location.assign 不起作用

    我有一个项目 我扫描二维码 然后它会根据扫描的代码自动打印出信息 我有扫描仪和打印机 每个二维码都对应一个URL 我可以让扫描仪填充输入字段 并且可以收到警报以显示扫描的信息 但是 每当我尝试分配 URL 时 它只是将信息附加到当前 URL
  • Visual Studio 2012 最近的项目未在任务栏中更新

    我已将 Visual Studio 固定到任务栏 用鼠标右键单击该图标时 会显示最近的项目和解决方案的列表 这曾经工作正常 但从现在起 该列表不再更新 我总是在下面看到相同的项目和解决方案Recent 尽管我最近参与了较新的项目 我该如何修
  • Google 云消息传递:如何使用 SHA1 证书?

    我有个疑问 我开发了一个 Android 应用程序 它通过 Google Cloud Messaging 接收推送通知 以下是我采取的步骤 在 Google Developer 控制台上创建新项目 并将我的项目编号复制 粘贴到我的 Andr
  • 如何使用 mongoose 连接到两个不同的数据库?

    我有两个数据库 一个数据库影响另一个数据库 所以我想看看是否有一种方法可以连接两个数据库 以便一个模型可以与另一个数据库关联 而另一个模型可以专注于差异数据库 目前我的模型如下所示 var mongoose Schema Moduser O
  • 水平滚动视图 - xamarin.forms

    我知道有很多关于这个话题的 在 Xamarin Forms ScrollView 中水平滚动 https stackoverflow com questions 24389661 scroll horizontally in xamarin
  • $(window).width 的条件行为

    当窗口高于 1278 像素时 我想要特定的 mouseenter 和 mouseleave 行为 对于低于 1278 的宽度 我想禁用此切换行为 并将 2 个元素设置为 1 个状态 可见和活动 如果浏览器宽度大于 1278 我还必须将状态重
  • 文件夹或 SQL Server 作为二进制存储图像的更好方法是什么?

    我正在计划为客户开发一个照片库应用程序 我正在 asp net 3 5 中开发该应用程序 并希望开发它 以便我可以使用各种前端跨多个平台重复使用该应用程序 基本上 我想知道将图像作为二进制文件存储在数据库中与简单地将文件存储在应用程序文件夹
  • SSH认证后仍需要登录

    我遵循了 GitHub 教程中的所有内容 https help github com articles generate ssh keys https help github com articles generating ssh keys
  • 从t-sql中找出sql server服务已经运行了多长时间

    我想是否可以从 sql server 内部计算出 sql server 已经运行了多长时间 想要将其与 DMV 之一结合使用以获取未使用的索引 但每次 sql server 加载时计数器都会重新设置 所以我想知道它们会有多大用处 SELEC
  • 将 Cdk Overlay 放置在 Angular/Elements Web 组件内

    我有一个更复杂的 Angular 应用程序 我想将其部署为 Angular elements Web 组件 该应用程序使用 mat dialog 并且 Web 组件也不会占用 100 的浏览器窗口大小 我的问题是 mat dialog 的