Angular6: No hay proveedor para el inyector cuando se usa la biblioteca local
Soy algo nuevo en las versiones de Angular publicadas en AngularJS y decidí probarlas. Lo que quiero hacer es crear una biblioteca de componentes de la interfaz de usuario y una aplicación que consuma dicha biblioteca. En mi biblioteca, decidí crear los componentes como WebComponents, así que siguiendo los tutoriales que he encontrado hasta ahora, tengo algo como
import { Injector, NgModule } from '@angular/core'
import { createCustomElement } from '@angular/elements';
import { MyButtonComponent} from './my-button.component'
@NgModule({
declarations: [MyButtonComponent],
entryComponents: [MyButtonComponent]
})
export class MyButtonModule {
constructor(injector: Injector) {
const myButton = createCustomElement(MyButtonComponent, { injector });
customElements.define('my-button', myButton);
}
}
Para mi componente personalizado. Si agrego todos los archivos (el módulo, el componente, la plantilla y los archivos SCSS) de mi componente directamente a mi aplicación, funciona como se esperaba, así que sé que la declaración de mi componente es correcta. Sin embargo, si en mi aplicación incluyo el componente de mi biblioteca, cuando ejecuto mi aplicación conng serve
, Veo el error:
Error: StaticInjectorError(AppModule)[MyButtonModule -> Injector]:
StaticInjectorError(Platform: core)[MyButtonModule -> Injector]:
NullInjectorError: No provider for Injector!
Estoy usando Angular 6 y tengo ambos proyectos ejecutándose localmente y estoy usandong-packagr
para agrupar mi biblioteca. Yo añadí@angular/core
y@angular/elements
comopeerDependencies
en mi biblioteca, y en mi aplicación principal tuve que agregar
"resolutions": {
"@angular/core": "6.1.4"
}
Para resolver el errorcannot redeclare block-scoped variable 'ngDevMode'
(no estoy seguro si esto está relacionado o no). Inicialmente pensé que el error de inyección podría ser causado porest pero he agregado lapreserveSymlinks
para miangular.json
archivo y todavía tengo el error.
Alguna idea sobre lo que podría estar causando est
UPDATE: si copio los archivos manualmente desde la carpeta de mi biblioteca y los pego dentro de lanode_modules
carpeta de mi aplicación principal funciona, lo que me lleva a pensar que es algo relacionado con enlaces simbólicos.