如何实现MAT_DIALOG_DEFAULT_OPTIONS?

How to implement MAT_DIALOG_DEFAULT_OPTIONS?

在一个项目中,我们有多个对话框。 现在,我想将 samen 全局变量设置为 DialogOption。

我发现:https://material.angular.io/components/dialog/overview 和这个代码:

@NgModule({
  providers: [
    {provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: {hasBackdrop: false}}
  ]
})

I applied these code with some other, but it doesn't work. The settings doesn't applied at all.

有人能使这些设置起作用吗?

有效...转到 here 并添加这些以验证它。

import {MAT_DIALOG_DEFAULT_OPTIONS} from '@angular/material';

....

providers: [
  {provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: {hasBackdrop: false}}
]
import {
    MAT_DIALOG_DEFAULT_OPTIONS
  } from '@angular/material';

 @NgModule({
    providers: [  
        {provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: 
        {hasBackdrop: true, direction: 'ltr',height:'500px'}}
    ]
 })

像这样添加应该会影响默认选项,

示例值:

hasBackdrop:true // 不允许在对话框外单击时关闭对话框。

direction: 'ltr' //设置文本从哪里开始 - 从左到右。

感谢@Fartab,我看到了我的问题,angular 示例以下列方式打开对话框:

const dialogRef = this.dialog.open(DialogOverviewExampleDialog, {
  width: '250px',
  data: {name: this.name, animal: this.animal}
});

但我是这样打开对话框的:

const dialogConfig = new MatDialogConfig();
dialogConfig.width = '600px';
dialogConfig.autoFocus = true;
dialogConfig.data = {
  customer: data,
};
const dialogRef = this.dialog.open(DeleteFtpCustomerComponent, dialogConfig);

我想每次打开对话框时,设置都会从新配置加载。 所以我把对话框的打开改成了Fartab的例子。现在它的工作:)

Angular Material 为其多个配置选项提供实用的默认值,例如 closeOnNavigationautoFocus

如果您只想覆盖一些配置项,而将其余配置项保留为默认值,您可以这样提供 MAT_DIALOG_DEFAULT_OPTIONS


import {MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig} from '@angular/material';

...

  providers: [
    {
      provide: MAT_DIALOG_DEFAULT_OPTIONS,
      useValue: {
        ...new MatDialogConfig(),
        hasBackdrop: false,
      } as MatDialogConfig,
    }
  ]

...

使用这种方法,您只需指定要更改的配置选项。其余的将采用它们的默认值。

我们可以通过在对话框选项中添加 hasBackdrop 和 disableClose 属性来禁用 angular material 对话框背景。

openDialog(tabIndex, paramIndex){
const dialogRef = this.dialog.open(TabChangeDialogboxComponent,{
  width: '330px',
  height: '200px',
  hasBackdrop: true, //Here line to add
  disableClose: true,//Here line to add
  data: {
    tabInd: tabIndex,
    paramInd: paramIndex 
  }
});

以防万一,如果有人仍然需要帮助,请按照此模式获取 mat 对话框默认选项。

module.ts

{ provide: MAT_DIALOG_DEFAULT_OPTIONS,
  useValue: { hasBackdrop: true, disableClose: true } as MatDialogConfig
}

您想打开对话框的任何组件。

const dialogConfig: MatDialogConfig = {}; // important to use this method.
dialogConfig.panelClass = 'no-padding-dialog';
// Any additional dialog configs
this.dialog.open(YourComponent, dialogConfig);

当您必须应用默认配置时避免使用以下内容,因为它会创建对话框配置的新实例。

const dialogConfig = new MatDialogConfig(); // Don`t use