Я использую angular пользовательских элементов для создания приложения, в котором MatDialog является частью пользовательского элемента. У меня есть MatMenu в хост-приложении. Проблема в том, что когда я открываю диалоговое окно с матом при загрузке страницы, а затем открываю меню с матами, диалоговое окно с математикой впоследствии не работает, в противном случае, если я сначала открою меню, а затем диалоговое окно с матом, меню не будет работать больше.
Вы можете найти стек стека по адресу: https://stackblitz.com/edit/angular-nr58ab-tbu38h
Я добавил основной. js код приложения MatDialog в индекс. html сам , Файл main. js был сгенерирован после сборки приложения с помощью ngx-build-plus в режиме prod с хэшированием вывода none и true для одного пакета.
Код приложения MatDialog выглядит следующим образом:
app.module.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() {}
}
app.component.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>
Это приложение, которое я создал и поместил в index. html приложения в stackblitz.
Я застрял с этим в течение некоторого времени, я попытался запустить dialog.open () внутри NgZone. run () тоже, но там тоже не повезло. Спасибо.