NgbDateParserFormatter никогда не будет внедрен, потому что инъекции работают только с классами, экземпляры которых создаются с помощью внедрения зависимостей Angulars (DI).
Чтобы решить вашу проблему, я предлагаю создать Injectable Service со всеми необходимыми вам методами, а затемвнедрите его в каждый компонент, который нуждается в его методах.
Вы можете увидеть учебник по их использованию здесь , но это будет выглядеть так:
import { Component, Injectable } from '@angular/core';
import {NgbDateParserFormatter, NgbDateStruct, NgbModal, NgbDate } from '@ng-bootstrap/ng-bootstrap';
import { DatePipe } from '@angular/common';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class DateFormatHelper {
private datePipe = new DatePipe('en-US');
constructor(private ngbDateParserFormatter: NgbDateParserFormatter) {
}
public formatedDate(val: any): any {
const bDate = val;
return this.ngbDateParserFormatter.format(bDate);
}
public parsengbDate(value: string): NgbDateStruct {
let returnVal: NgbDateStruct;
if (!value) {
returnVal = null;
} else {
try {
const dateParts = this.datePipe.transform(value, 'MM-dd-
yyyy').split('-');
returnVal = { year: Number(dateParts[2]), month:
Number(dateParts[0]), day: Number(dateParts[1]) };
} catch (e) {
returnVal = null;
}
}
return returnVal;
}
}
PS Не забудьте добавить NgbDateParserFormatter
в качестве поставщика в ваш модуль для их внедрения (не DateFormatHelper, потому что я уже зарегистрировал его в метаданных @Injectable
).Чтобы понять, как работают инъекции, посмотрите здесь