Я сделал библиотеку angular (7.2) в комплекте с ng-packagr, опубликованную на npm. Теперь я хочу использовать его в другом проекте. Я могу импортировать модуль, но не содержащие его компоненты:
Модуль в моем библиотечном проекте, который я связываю, выглядит так:
import { ConfirmDialogComponent } from './dialogs/confirm/confirm-dialog.component';
@NgModule({
imports: [...],
entryComponents: [
ConfirmDialogComponent
],
declarations: [
ConfirmDialogComponent
],
exports: [
ConfirmDialogComponent
]
})
export class MyComponents { }
В целевом проекте я устанавливаю опубликованный пакет с помощью npm и импортирую модуль в `app.modules.ts.
импортировать {BrowserModule} из '@angular/platform-browser'; импортировать {NgModule} из '@angular/core';
import { AppComponent } from './app.component';
import { MyComponents } from 'my-components';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
MyComponents
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Пока нет ошибок, но когда я использую его в app.component.ts
import { Component } from '@angular/core';
import { ConfirmDialogComponent } from 'my-components';
оператор приводит к ошибке компиляции
ERROR in src/app/app.component.ts(2,10): error TS2305: Module '"../../node_modules/my-components/my-components"' has no exported member 'MessageDialogComponent'.
Если я посмотрю на node_modules/my-components/my-components.d.ts
/**
* Generated bundle index. Do not edit.
*/
export * from './my-components.module';
export { ConfirmDialogComponent as ɵa } from './dialogs/confirm/confirm-dialog.component';
и это app.component.ts
к
import { Component } from '@angular/core';
import { ɵa } from 'my-components';
оно работает!
Так почему же минимизированный (?) псевдоним работает, а не настоящее имя компонента?
--
редактировать: если я удалю как ɵa из файла объявления, я могу использовать настоящее имя компонента, как и ожидалось. Что здесь не так?