Я создаю библиотеку Angular для использования в большем проекте. Это будет подход с несколькими репо, при этом каждая из частей приложения будет библиотекой. У всех этих частей будут свои компоненты, трубы, услуги ...
Но мои первые тесты не работают. Я создал свою автономную библиотеку и компонент hello-world, собрал его с --watch, связал его с NPM с моим базовым проектом ... и он работает. Это показывает сообщение на экране. Проблема возникает, когда я пытаюсь добавить трубу любого вида, даже разрыв трубы по умолчанию. Если создать объект Date и использовать канал даты после сообщения, оно прерывается. То же с валютой или асинхронной c трубами.
Ошибка для канала данных:
Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[DatePipe -> InjectionToken LocaleId]:
StaticInjectorError(Platform: core)[DatePipe -> InjectionToken LocaleId]:
NullInjectorError: No provider for InjectionToken LocaleId!
Error: StaticInjectorError(AppModule)[DatePipe -> InjectionToken LocaleId]:
StaticInjectorError(Platform: core)[DatePipe -> InjectionToken LocaleId]:
NullInjectorError: No provider for InjectionToken LocaleId!
...
Ошибка для асинхронной c трубы:
Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[AsyncPipe -> ChangeDetectorRef]:
StaticInjectorError(Platform: core)[AsyncPipe -> ChangeDetectorRef]:
NullInjectorError: No provider for ChangeDetectorRef!
Error: StaticInjectorError(AppModule)[AsyncPipe -> ChangeDetectorRef]:
StaticInjectorError(Platform: core)[AsyncPipe -> ChangeDetectorRef]:
NullInjectorError: No provider for ChangeDetectorRef!
at NullInjector.push.../../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:8896)
...
Модуль библиотеки выглядит так:
@NgModule({
declarations: [HolaMundoTestComponent],
imports: [
CommonModule
],
exports: [HolaMundoTestComponent]
})
export class HolaMundoTestModule { }
И компонент, который он экспортирует:
@Component({
selector: 'lib-hola-mundo-test',
// templateUrl: './hola-mundo-test.component.html',
// template: `<h1>Hola mundo en fecha {{ dateFrom | date }}</h1>`,
template: `<h1>Hola mundo en fecha {{ text | async }}</h1>`,
styleUrls: ['./hola-mundo-test.component.scss']
})
export class HolaMundoTestComponent {
public text = new BehaviorSubject<string>('MITEXTO');
public dateFrom = new Date();
public money = 123245.234555;
// constructor(public holaMundoTest: HolaMundoTestService) {}
}
Есть идеи? Я импортирую CommonModule, который содержит все эти каналы по умолчанию, и это самая маленькая библиотека из возможных.