首页 > 解决方案 > 如何将材质对话框方向 rtl 设置为默认值?

问题描述

我有包含方向(ltr/rtl)的语言服务。

所以当我打开对话框时,我指定这样的方向:

    const dialogRef = this.dialog.open(SomeComponent,
      { direction: this.i18nService.dir}
    );

有没有办法根据服务设置所有对话的方向?

标签: angularangular-material

解决方案


当您包含提供者时,您可以设置全局变量

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

但我认为在那之后你不能在全球范围内改变它。

无论如何,您始终可以使用自己的服务来包装呼叫,如下所示:

import { Injectable, Component } from '@angular/core';
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { I18nService } from './path/to/i18nService.service.ts';

@Injectable()
export class MyDialogService {
    constructor(private i18nService: I18nService, private dialog: MatDialog ) { }

    open(component: Component, config = {}): MatDialogRef {
        return this.dialog.open(component, Object.assign(config, { direction: this.i18nService.dir }));
    }
}

推荐阅读