是否可以动态更改ngbDatepicker格式化程序?

时间:2019-06-28 19:49:48

标签: angular ng-bootstrap dateformatter ngb-datepicker

我正在寻找一种方法,可以根据用户选择在ngbDatepicker控件上的不同日期格式(例如mm-dd-yyyy / dd-mm-yyyy)之间进行切换。

感谢任何想法/帮助。

1 个答案:

答案 0 :(得分:0)

当然(不可能是什么)。但是在必要之前,您不了解DateParserFormater和DateAdapter参见this question in stackoverflow

在您的情况下,您只需要使用CustomDateParseFormat

好吧,我们唯一需要的是函数parsing / format和fromModel / toModel依赖于一个变量。我没有发现一种很棒的方式也可以注入服务

@Injectable({
  providedIn: 'root',
})
export class MaskController{
  mask:string="yyyy/MM/dd"
  public setMask(mask)
  {
    this.mask=mask;
  }
}

然后我们的CustomDateParserFormatter注入构造函数中

@Injectable()
export class CustomDateParserFormatter {
  constructor(private maskController:MaskController){}
  get mask()
  {
    return this.maskController.mask;
  }
   ...
}

好吧,我们唯一需要做的就是根据“ mask”的值以及调用

来更改函数。
maskController.setMask(...)

我们的ngbDatePicker可以根据需要工作。 Y在stackblitz中举了一个例子(只有两个“掩码”允许dd / MM / yyyy和yyyy / MM / dd)

注意:在stackblitz中,我也更改了dateFormat。完全不包含在提供程序中的CustomDateAdapter