Не удается прочитать свойство 'ngbDateParserFormatter' с неопределенным Angular - PullRequest
0 голосов
/ 26 июня 2019

Я преобразую объект даты ngBootstrap в обычный формат даты, используя ngbDateParserFormatter, внутри пользовательской функции проверки для поля ввода.

Но при конвертации продолжает появляться ошибка

Невозможно прочитать свойство 'ngbDateParserFormatter' из неопределенного

Я использовал ngbDateParserFormatter в нескольких местах ранее в этом файле, и он работает нормально.

Мой проверочный код: -

export class ApplyLeaveComponent {
  constructor(
    private panelService: PanelService,
    private router: Router,
    private fb: FormBuilder,
    private ngbDateParserFormatter: NgbDateParserFormatter,
    private toastr: ToastrService
  ) {}

  ngOnInit() {}

  applyLeave(data) {
    if (this.totalLeave - this.availedLeaves.length <= 0) {
      this.toastr.error("", "No Remaining Leaves", { positionClass: "toast- bottom-right" });
    } else {
      this.submitted = true;
      if (this.leaveForm.invalid) {
        return;
      } else {
        var leaveData = {
          financialYear: this.financialYear.id,
          profileId: this.userDetails.profileId,
          emailFrom: this.userDetails.email,
          leaveFromDate: this.ngbDateParserFormatter.format(data.value.leaveFromDate),
          leaveToDate: this.ngbDateParserFormatter.format(data.value.leaveToDate),
          leaveType: data.value.leaveType,
          leaveReason: data.value.leaveReason,
          notifyPerson: data.value.notifyPerson,
          reportingPerson: data.value.reportingPerson
        };
        this.applyLeaveService.SaveLeave(leaveData).subscribe(
          res => {
            console.log(res);
            this.leaveForm.reset();
            this.submitted = false;
            this.toastr.success("", "Leave applied Successfully", {
              positionClass: "toast-bottom-right"
            });
          },
          err => {
            console.log(err);
            this.toastr.error("", "Error on Applying", { positionClass: "toast-bottom-right" });
          }
        );
      }
    }
  }

  dateValidation(control: AbstractControl): { [key: string]: any } | null {
    var currentvalue = control.value;
    console.log(currentvalue);
    var selectedDate = this.ngbDateParserFormatter.format(currentvalue);

    let dateFormat = require("dateformat");
    let now = new Date();
    var today = dateFormat(now, "dd mm yyyy");
    console.log(today);

    return null;
  }
}

imagethis">

control.value - объект даты, имеющий значение {year: 2019, month: 6, day: 6}

Может кто-нибудь решить?

1 Ответ

1 голос
/ 26 июня 2019

Я понятия не имею, где именно используется dateValidation в вашем коде, но чтобы исправить эту ошибку, вам нужно будет связать this с вашим пользовательским валидатором, dateValidation.Это связано с тем, что контекст метода dateValidation при вызове с помощью Реактивной формы FormControl не связан с вашим основным ApplyLeaveComponent.

Например, вы можете связать this с dateValidationсделав следующее:

yourForm = this.fb.group({
  leaveFromDate: [null, [this.dateValidation.bind(this)]],
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...