Angular 4 - material 2 - md datepicker 设置一周的第一天

Angular 4 - material 2 - md datepicker set first day of the week

如何使用 material 2 设置一周的第一天?

即使我将语言环境设置为 hu 或其他任何设置,目前的默认设置也是周日..

找到解决方法:

写这个class

import {NativeDateAdapter} from '@angular/material';
import {Injectable} from '@angular/core';

@Injectable()
export class MyDateAdapter extends NativeDateAdapter {

  getFirstDayOfWeek(): number {
    return 1;
  }

}

然后导入到 app.module,如:

{provide: DateAdapter, useClass: MyDateAdapter},

与 Béla 几乎相同的答案,但我必须实现构造函数才能使其正常工作。

import { NativeDateAdapter } from '@angular/material';
import { Injectable } from '@angular/core';
import { Platform } from '@angular/cdk/platform';

@Injectable()
export class SwedishDateAdapter extends NativeDateAdapter {
  constructor() {
    super('sv-SE', new Platform());
  }

  getFirstDayOfWeek(): number {
    return 1;
  }
}

我目前使用的是 angular 6 对应的 material 版本。

上述解决方案有效,但由于我使用的是 moment.js 适配器,应用程序停止正常工作。

使用 https://github.com/angular/material2/blob/master/src/material-moment-adapter/adapter/moment-date-adapter.ts 处的代码并将其注入模块使应用程序检测到正确的区域并将开始日期设置为星期一(我的是 pt-pt)。

唯一需要更改的是设置正确的时刻导入。

constructor(
    private dateAdapter: DateAdapter<Date>
  ) { }

  ngOnInit() {
    this.dateAdapter.setLocale('es');
    this.dateAdapter.getFirstDayOfWeek = () => { return 1; }
  }

只需添加以下内容即可app.module.ts:

  providers: [
    { provide: LOCALE_ID, useValue: 'en-GB' }
  ],