Angular 9 платформа bootstrap несколько модулей - запуск нескольких приложений на странице - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю над проектом, который требует запуска двух приложений на странице. Что-то вроде:

<body>
  <app-main></app-main>
  <app-secondary></app-secondary>
</body>

Идея состоит в том, что два приложения имеют свои собственные Injector / Routing / NgZone, одно из приложений будет отображаться одновременно с обновлением стиля display: none/block.

* 1006. * Я могу добиться этого, загрузив два модуля в main.ts. Он отлично работает с изолированным Injector / Routing / NgZone:
platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));


platformBrowserDynamic().bootstrapModule(AppSecondaryModule)
.catch(err => console.error(err));

Основной модуль:

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {

}

Вторичный модуль:

@NgModule({
  declarations: [AppSecondComponent],
  imports: [BrowserModule],
  providers: [],
  bootstrap: [AppSecondComponent]
})
export class AppSecondaryModule{

}

Но я не видите никакого официального документа о загрузке нескольких модулей, так что у вас, ребята, есть идеи или комментарии по этому поводу? Вызывает ли это какой-либо побочный эффект, и это правильный путь к go?

Кстати, я пробовал provideIn: 'platform', который был только что представлен в Angular 9, он прекрасно работает, оба приложения могут использовать эту общую службу.

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2020

Кажется, я нашел это в документе.

Метод platformBrowserDynami c () создает инжектор, настроенный с помощью PlatformModule, который содержит зависимости c, определяемые платформой. Это позволяет нескольким приложениям совместно использовать конфигурацию платформы. Например, браузер имеет только одну строку URL, независимо от того, сколько приложений у вас запущено. Вы можете настроить дополнительных c провайдеров, определяемых платформой, на уровне платформы, предоставив extraProviders с помощью функции platformBrowser ().

https://angular.io/guide/hierarchical-dependency-injection#platform -инжектор

Это означает, что Angular поддерживает запуск нескольких приложений на одной платформе (странице), и мы даже можем совместно использовать службу платформы, настроенную как provideIn: 'platform'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...