angular - 如何将材质对话框方向 rtl 设置为默认值?
问题描述
我有包含方向(ltr/rtl)的语言服务。
所以当我打开对话框时,我指定这样的方向:
const dialogRef = this.dialog.open(SomeComponent,
{ direction: this.i18nService.dir}
);
有没有办法根据服务设置所有对话的方向?
解决方案
当您包含提供者时,您可以设置全局变量
@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 }));
}
}
推荐阅读
- java - 访问局部变量的匿名类
- java - 不知道为什么我的程序没有看到 x>=
- sql - 来自变量的 IN 子句
- sql - SQL SERVER - CASE in WHERE (THEN IS NULL ELSE IS NOT NULL)
- python - 使用函数来简化c0de?
- python - 嵌套循环和元组
- python - 将串行输出打印到 Python 程序时,ArduinoJson 序列化空 JSON 数据
- ios - GooglePlaces API 使我的应用程序文件变大。对此我能做些什么吗?
- c# - PowerShell cmdlet 中的不明确 SwitchParameter 绑定
- scala - 在 play sbt 项目中访问命令行参数