Я довольно новичок в разработке Angular (7), потому что я думаю об архитектуре нового большого веб-проекта.Поэтому я немного поиграюсь с возможными вариантами, особенно используя микро-интерфейс.
Я создал два угловых проекта -> "micro-app-shell" и "micro-app-a" .
Оболочкавнешний контейнер веб-приложения, которое управляет несколькими микро-приложениями.
Я прочитал некоторые статьи о микро-приложениях с angular и хочу попробовать подход с пользовательскими элементами.
"micro-app-a "
выдержка из " app.module.ts "
@NgModule({
declarations: [
AppComponent,
ClientAComponent
],
imports: [
BrowserModule
],
providers: [],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
// bootstrap: [AppComponent]
entryComponents: [
ClientAComponent,
]
})
export class AppModule {
constructor(private injector: Injector) {
}
ngDoBootstrap() {
const appElement = createCustomElement(ClientAComponent, { injector: this.injector });
customElements.define('client-a', appElement);
}
}
" app.component.html "
<div style="text-align:center">
<h1>
Client A Micro App
</h1>
</div>
Я создаю приложение с помощью следующей команды:
ng build --output-hashing none --output-path C:/Dev/mdo_workspace/micro-app-test/micro-app-shell/src/assets/scripts
"micro-app-shell"
Я добавил следующееto of index.html
<script type="text/javascript" src="./assets/scripts/runtime.js"></script>
<script type="text/javascript" src="./assets/scripts/polyfills.js"></script>
<script type="text/javascript" src="./assets/scripts/styles.js"></script>
<script type="text/javascript" src="./assets/scripts/vendor.js"></script>
<script type="text/javascript" src="./assets/scripts/main.js"></script>
Я расширяю app.module.ts частью схемы
schemas: [CUSTOM_ELEMENTS_SCHEMA],
Теперь мои вопросы / проблемы
1 a) Когда я раскомментирую в "micro-app-a" -> polyfills.js import zone.js (import 'zone.js / dist / zone';) и запускаю "micro- appapp-shell "Я получаю ошибку
Зона уже загружена.
1 б) Когда я комментирую в "micro-app-a" -> polyfills.js импорт zone.js (импорт 'zone.js / dist / zone';) и запустить «micro-app-shell» я получаю сообщение об ошибке
В этой конфигурации Angular требует Zone.js
Wat является правильным способом предотвращения этой ошибки?Или я могу проигнорировать это?
2) Когда я применяю изменения вопроса 1a и запускаю "micro-app-shell" Я хочу показать "micro-app-" как пользовательский элемент в app.comment.html, например:
<div>
<client-a></client-a>
</div>
Содержимое " micro-app-shell " - " app.component.html " отображается, но я получаю ошибку:
Не удалось создать 'HTMLElement': пожалуйста, используйте оператор 'new', этот конструктор объекта DOM нельзя вызвать как функцию.
Я, например, следующие образцы:
https://www.softwarearchitekt.at/post/2018/05/04/microservice-clients-with-web-components-using-angular-elements-dreams-of-the-near-future.aspx https://www.ngdevelop.tech/angular-elements/
Большое спасибо за вашу помощь заранее!