- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Angular 自定义元素构建一个应用程序,其中 MatDialog 是自定义元素的一部分。我在主机应用程序中也有一个 MatMenu。问题是,当我在页面加载时打开 mat-dialog 然后打开 mat-menu 时,mat-dialog 之后不起作用,否则如果我先打开菜单然后再打开 mat-dialog,则菜单不起作用工作了。
您可以在以下位置找到 stackblitz:https://stackblitz.com/edit/angular-nr58ab-tbu38h
我已经在 index.html 本身中添加了 MatDialog 应用程序的 main.js 代码。 main.js 是在 prod 模式下使用 ngx-build-plus 构建应用程序后生成的,输出散列为无,单包为真。
MatDialog 应用代码如下:
应用程序模块.ts
import { BrowserModule } from "@angular/platform-browser";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { NgModule, Injector } from "@angular/core";
import { AppRoutingModule } from "./app-routing.module";
import { AppComponent } from "./app.component";
import { createCustomElement } from "@angular/elements";
import { MatDialogModule, MatButtonModule } from "@angular/material";
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
AppRoutingModule,
MatDialogModule,
BrowserAnimationsModule,
MatButtonModule
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [AppComponent]
})
export class AppModule {
constructor(private injector: Injector) {
const myCustomElement = createCustomElement(AppComponent, {
injector: this.injector
});
customElements.define("app-test-data", myCustomElement);
}
ngDoBootstrap() {}
}
应用程序组件.ts
import { Component, Input, TemplateRef } from "@angular/core";
import { MatDialog } from "@angular/material";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
constructor(private dialog: MatDialog) {}
openModal(temp: TemplateRef<any>) {
this.dialog.open(temp, { width: "100px", height: "100px" });
}
}
和 app.component.html
<button mat-raised-button (click)="openModal(modal)">Open</button>
<ng-template #modal>
<mat-dialog-content>
Hello
</mat-dialog-content>
</ng-template>
这是我构建并放入 stackblitz 应用程序的 index.html 中的应用程序。
我现在坚持这个有一段时间了,我也尝试在 NgZone.run() 中运行 dialog.open(),但也没有运气。谢谢。
最佳答案
如果您使用的是 Angular 8 及以下版本。考虑升级到 Angular 10。
我们也面临着基于 Angular 元素的微前端的同样问题。将应用程序升级到 angular 10,问题神奇地解决了。 :)
关于Angular 自定义元素和 Angular 8 Material : MatDialog and MatMenu not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763017/
是否有机会根据触发该菜单的按钮指定 matMenu 的宽度?我希望 matMenu 与触发器一样宽。触发器处于 flex 状态,因此宽度不是常量。 {{currentFactory?.name}}
我有以下设置: @Directive({ selector: '[test]' }) export class Test { constructor( private
我需要动态创建一堆MatMenu。到目前为止,我不知道该怎么做: 1 - 动态创建模板引用变量(用于 mat-menu 组件) 2 - 引用动态创建的变量(在触发器的 [matMenuTriggerF
我想突出显示 MenuItem 中当前处于事件状态的元素,即用户当前所在的元素。 例如:我正在导航到个人资料页面。然后我希望突出显示该菜单项。我已经用一些 HTML 和 TypeScript 尝试过,
随着 Angular Material 及其 breaking changes 的新更新, 我不能再使用我的 组件。它在我导入 MaterialModule 时工作正常,但现在在导入 MatMenuM
我对 Angular Material Menu 模块有一点问题。 我的 中有此代码app.module.ts : import { SharedModule } from './shared/sha
我有一个复杂的 MatMenu 和更多 MatMenuItem。每个 MatMenuItem 的可见性都基于一个条件。如果所有可能的条件都为假,则触发按钮将被禁用,例如: Menu Item 1
我正在使用 Angular 自定义元素构建一个应用程序,其中 MatDialog 是自定义元素的一部分。我在主机应用程序中也有一个 MatMenu。问题是,当我在页面加载时打开 mat-dialog
我正在开发 Angular 库,我有这个简单的菜单: {{button.text}} 模块看起来像这样。 import { NgModule } from '@
我是一名优秀的程序员,十分优秀!