Запрос и внедрение компонентов Angular 2, неизвестных при начальной загрузке

#angular

#angular

Вопрос:

Как внедрить дополнительные компоненты, неизвестные при начальной загрузке, в приложение angular 2 после начальной загрузки?

Я создаю приложение, которое в основном позволяет пользователю подписываться на определенные продукты (сторонние SPA). В меню слева вы видите темы, на которые вы подписаны, справа вы просматриваете приложения в главном окне. Каждый пользователь может быть подписан на разные наборы приложений, что означает, что каждому пользователю придется загружать определенный для пользователя набор компонентов.

Я видел статьи о отложенной загрузке (https://medium.com/@daviddentoom/angular-2-lazy-loading-with-webpack-d25fe71c29c1#.wv914275u ), динамически загружая компоненты (https://medium.com/@tudorgergely/injecting-components-dynamically-in-angular-2-3d36594d49a0#.eq1ybok65 ) и предоставление внешних данных при начальной загрузке (https://blog.sstorie.com/providing-external-data-when-bootstrapping-angular-2 /).

Но, похоже, ни одна из этих вещей не охватывает то, что я действительно хотел бы:

  1. Начальная загрузка основной архитектуры приложения (легкий скелет, который подходит для каждого пользователя)
  2. Запрос из моего веб-API списка подписок пользователя; для создания меню (и маршрутизации!) динамически и для…
  3. Запрос — после начальной загрузки — дополнительных компонентов (например, одного файла javascript для каждого приложения), которые должны быть ему доступны; какая-то предварительная загрузка / отложенная загрузка, но без того, чтобы приложение знало при начальной загрузке, что будет загружено в будущем.
  4. «Разбор» этих файлов и предоставление им доступа (внедрение) в скелет.

Может кто-нибудь помочь мне с тем, как заставить это работать, или посоветовать мне, как это должно быть сделано / сделано по-другому?

Спасибо за помощь!

Комментарии:

1. Вы нашли какое-либо решение для этого. Мне нужно точно так же, как вы просили.

2. Нет, к сожалению, нет… Сейчас для меня это не является ключевым, но я определенно был бы заинтересован в решении… У меня работает отложенная загрузка, служба инжектора модальных компонентов… Но каждый хочет знать, по крайней мере, компонент при начальной загрузке, независимо от того, визуализирован он или нет. Было бы здорово иметь возможность вставлять анонимные компоненты «на лету», в основном как модальные, в конце концов, вы просто вешаете их в узел dom. Я не понимаю, почему это должно быть известно априори при начальной загрузке.

3. Да, я согласен с вами. На данный момент я думаю о нескольких приложениях angular 2 в одном представлении.

4. Довольно хакерский вариант 😉

5. Ну, если подумать.. Я предполагаю, что проблема возникает из-за того, что ваше приложение компилируется в браузере, поэтому ng2 хочет знать, что компилировать заранее.