代码之家  ›  专栏  ›  技术社区  ›  VIKAS KOHLI

如何在角度引导中更改ngbDatepicker输入字段中的日期格式?

  •  1
  • VIKAS KOHLI  · 技术社区  · 6 年前

    HTML:-

          <li><span class="float-left label">Date of birth</span>
            <div class="float-right fill-text position-relative edit-calender">
              <input type="text" (click)="d.toggle()" class="edit-field"
                [outsideDays]="'collapsed'" id="datePicker" ngbDatepicker formControlName="dob" #d="ngbDatepicker" [minDate]="minDate"
                [maxDate]="maxDate" readonly>
              <span class="calendar" id="calIcon" (click)="waitAndToggle();"><i id="calIcon" class="far fa-calendar-alt"></i></span>
              <div class="text-danger" *ngIf="form.get('dob').hasError('required')
                    && ( form.get('dob').touched || formSubmitAttempt)">
                {{ 'Validations.dob' | translate }}
              </div>
            </div>
          </li>
    

    检查其node_modules文件夹,但没有为相同的问题提供任何解决方案。

    我查了一下要点 https://gist.github.com/nrobinaubertin/61ff1c3db355c74f4e56f485b566ab22 但这并没有将输入字段中的值设置为DD-MM-YYYY。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Eliseo    6 年前

    要使用扩展NBGDateParsPerformat的类,必须将其包含在提供程序的app.module中,

    @NgModule({
      declarations: [
        AppComponent,
        ...  
      ],
      imports: [
        BrowserModule,
        NgbModule,
        ...
      ],
      providers: [
        { provide: NgbDateParserFormatter, useClass: DateParserFormatter },
        ...
    
      ],
      bootstrap: [AppComponent]
    })
    
        2
  •  0
  •   Bharath Sagar    5 年前

    最好的解决办法是改变

    ngb-date-parser-formatter.js

    从下面的代码中,您将获得 日期格式

    var __extends = (this && this.__extends) || function (d, b) {
        for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
    import { padNumber, toInteger, isNumber } from '../util/util';
    /**
     * Abstract type serving as a DI token for the service parsing and formatting dates for the NgbInputDatepicker
     * directive. A default implementation using the ISO 8601 format is provided, but you can provide another implementation
     * to use an alternative format.
     */
    var NgbDateParserFormatter = (function () {
        function NgbDateParserFormatter() {
        }
        return NgbDateParserFormatter;
    }());
    export { NgbDateParserFormatter };
    var NgbDateISOParserFormatter = (function (_super) {
        __extends(NgbDateISOParserFormatter, _super);
        function NgbDateISOParserFormatter() {
            return _super !== null && _super.apply(this, arguments) || this;
        }
        NgbDateISOParserFormatter.prototype.parse = function (value) {
            if (value) {
                var dateParts = value.trim().split('-');
                if (dateParts.length === 1 && isNumber(dateParts[0])) {
                    return { year: toInteger(dateParts[0]), month: null, day: null };
                }
                else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {
                    return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };
                }
                else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {
                    return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };
                }
            }
            return null;
        };
        NgbDateISOParserFormatter.prototype.format = function (date) {
            return date ?
            (isNumber(date.day) ? padNumber(date.day) : '')+"-"+ (isNumber(date.month) ? padNumber(date.month) : '') +"-"+ date.year:'';
        };
        return NgbDateISOParserFormatter;
    }(NgbDateParserFormatter));
    export { NgbDateISOParserFormatter };
    //# sourceMappingURL=ngb-date-parser-formatter.js.map