首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局设置mat-datepicker的语言

全局设置mat-datepicker的语言
EN

Stack Overflow用户
提问于 2021-08-12 07:49:21
回答 1查看 102关注 0票数 1

当单击另一个组件中的相应按钮时,我需要为应用程序中的所有日期选择器设置语言,例如documentation中给出的示例仅在特定组件中工作,并且我在许多地方都有日期选择器,因此我不想为每个组件添加相同的逻辑。有什么办法可以做到吗?

topbar.component.html

代码语言:javascript
复制
  <button (click)="changeLanguage('fr')" class="topbar__languageButton" mat-button></button>
  <button (click)="changeLanguage('en')" class="topbar__languageButton" mat-button></button>

topbar.component.ts

代码语言:javascript
复制
import { Component, OnInit} from '@angular/core';
import { DateAdapter } from '@angular/material/core';

@Component({
    selector: 'app-topbar',
    templateUrl: './topbar.component.html',
    styleUrls: ['./topbar.component.scss'],
})
export class TopbarComponent implements OnInit {

    constructor(private adapter: DateAdapter<any>) { }

    ngOnInit(): void {}

    changeLanguage(language: string): void {
        this.adapter.setLocale(language);
    }
}

target.component.html

代码语言:javascript
复制
<mat-form-field appearance="fill">
  <mat-label>Choose a date</mat-label>
  <input matInput [matDatepicker]="picker">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

target.component.ts

代码语言:javascript
复制
import { Component, OnInit} from '@angular/core';
import { DateAdapter } from '@angular/material/core';

@Component({
    selector: 'app-target',
    templateUrl: './target.component.html',
    styleUrls: ['./target.component.scss'],
})
export class TargetComponent implements OnInit {

    constructor() { }

    ngOnInit(): void {}
}
EN

回答 1

Stack Overflow用户

发布于 2021-08-12 10:01:36

尽管在他们的示例中,MAT_DATE_LOCALE注入令牌和DateAdapter都是在组件级别提供的,但这并不能阻止您在AppModule中使用根注入器来提供它们。通过在那里提供它们,您的所有组件都将获得相同的区域设置,除非在另一个模块中被覆盖。

代码语言:javascript
复制
  @NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    CoreModule,
  ],
  providers: [
    { provide: MAT_DATE_LOCALE, useValue: 'de-CH' },
    {
      provide: DateAdapter,
      useClass: MomentDateAdapter,
      deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
    },
    { provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },
  ],
  bootstrap: [AppComponent],
})
export class AppModule {}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68753520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档