Связь приложения-контейнера с одним спа с дочерним приложением angular

Мне нужна помощь для связи из моего контейнера single-spa с загруженным угловым приложением (дочерним). когда пользователь нажимает на параметр родительского приложения (спа-контейнера), он должен сообщаться дочернему приложению для изменения режима.

это будет происходить не очень часто. Но не смог найти способ связи из контейнера с загруженным угловым приложением.

есть деталь, предоставленная самим спа: деталь спа-коммуникации, но не ясная, и нет подробных шагов. кто-нибудь мне поможет?

1 ответ

Решение

Я один из тех, кто поддерживает single-spa.

Мы, как правило, не высказываем своего мнения в документации о том, как реализовать связь между модулями, потому что есть много способов реализовать это, и каждый имеет свои плюсы / минусы. В ситуации, которую вы описали, похоже, что вы можете изучить вариант № 3 по опубликованной вами ссылке.

Пользовательские события браузера

В родительском элементе вы запускаете пользовательские события в окне. API на MDN.

Быстрый пример

//  in the parent (usually called the single-spa config or root-config in the documentation)
const event = new CustomEvent("myEvent", {favoriteMovie: 'StarWars'})
window.dispatchEvent(event)
// in the child (or registeredApplication)
window.addEventListener("myEvent", myEventHandlingFunction)

function myEventHandlingFunction(e) {...}

Это должно, по крайней мере, помочь вам начать работу, есть и другие варианты общения, и этот конкретный подход не будет лучшим решением в каждой ситуации.

Также стоит отметить, что customEvents не работает в IE11, если вы не включили полифилл.

Другие вопросы по тегам