раздел)
ного новичок в англоязычных версиях поста AngularJS и решил попробовать. Я хочу создать библиотеку компонентов пользовательского интерфейса и приложение, которое будет использовать указанную библиотеку. В своей библиотеке я решил создать компоненты как WebComponents, поэтому, следуя учебникам, которые я нашел до сих пор, у меня есть что-то вроде
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);
}
}
Для моего пользовательского компонента. Если я добавлю все файлы (модуль, компонент, шаблон и файлы SCSS) для моего компонента непосредственно в мое приложение, оно будет работать, как и ожидалось, поэтому я знаю, что объявление моего компонента правильное. Однако, если в моем приложении я включаю компонент из моей библиотеки, при запуске моего приложения сng serve
Я вижу ошибку:
Error: StaticInjectorError(AppModule)[MyButtonModule -> Injector]:
StaticInjectorError(Platform: core)[MyButtonModule -> Injector]:
NullInjectorError: No provider for Injector!
Я использую Angular 6, и у меня оба проекта работают локально, и я используюng-packagr
связать мою библиотеку. я добавил@angular/core
а также@angular/elements
какpeerDependencies
в моей библиотеке, и в моем главном приложении я должен был добавить
"resolutions": {
"@angular/core": "6.1.4"
}
Чтобы решить ошибкуcannot redeclare block-scoped variable 'ngDevMode'
(не уверен, связано ли это или нет). Первоначально я думал, что ошибка впрыска может быть вызванаэто но я добавилpreserveSymlinks
к моемуangular.json
файл, и у меня все еще есть ошибка.
Есть мысли о том, что может быть причиной этого?
ОБНОВЛЕНИЕ: если я скопирую файлы вручную из папки библиотеки и вставлю их вnode_modules
папка моего основного приложения работает, что наводит меня на мысль, что это что-то, включающее символические ссылки