为什么 ng-if 不能在 mat-dialog 中工作

Why do ng-if don't work inside a mat-dialog

我创建了一个 mat-dialog 组件来触发 http 响应。当我在 mat-dialog 的 html 中包含一个 ngIf 语句时,它没有被处理。在控制台上它显示如下警告。

无法绑定到 'ngIf',因为它不是 'div' 的已知 属性。

NgIf 在项目的所有其他组件中工作正常。

在 typescript 文件中调用 mat-dialog。

 this.matDialog.open(PaymentModelComponent, {
              width: "630px",
              data: { message: response.comment },
              autoFocus: false,
              height: "630px",
            });

html代码

<div *ngIf="true"><p>Show this only if "show" is true</p></div>

为什么 ng-if 在 mat-dialog 中不起作用?

我发布这篇文章希望有人会发现它有用。这不是这个问题的确切答案,但这是我克服我的情况的方法。在我的例子中,我使用 mat-dialog 组件作为 app.module.ts

中的入口组件
 entryComponents: [ErrorComponent, UserAccountInfoReloadPopupDialogComponent],

出于某种原因,ng-if 它在对话框中不起作用。它不仅适用于 ng-if,所有其他如 ng-for 都不可用。

我通过在同一个 ts 文件中定义这两个组件解决了这个问题。

@Component({
  selector: "app-account-info",
  templateUrl: "./account-info.component.html",
  styleUrls: ["./account-info.component.css"],
})
export class AccountInfoComponent implements OnInit {
//code
}

@Component({
  selector: "user-account-info-reload-popup-dialog",
  templateUrl: "./payment-modal.component.html",
  styleUrls: ["./payment-modal.component.css"],
})
export class UserAccountInfoReloadPopupDialogComponent implements OnInit {
//code
}

然后我在 angular 模块声明中定义了新创建的 mat-dialog 组件。

@NgModule({
  declarations: 
[
UserAccountInfoReloadPopupDialogComponent
],

这解决了我的问题。您可以查看 angular mat-dialog 文档。 https://material.angular.io/components/dialog/overview

您需要做的就是将对话框添加到您的模块导入和声明中。在声明对话框的组件所在的同一模块中。

我需要做的就是将 DialogComponent 添加到模块的声明中:

declarations: [..., MyDialogComponent]

无需将组件代码放在同一个文件中。