Я надеюсь, что название не вводит в заблуждение слишком много, поскольку я понятия не имею, как еще назвать, но вот проблема:Получите рекурсивный вложенный шаблонный вызов для работы в Angular 2?
Я разрабатываю приложение с угловыми 2 и использовать вложенные шаблоны (надеюсь, что это право имя для них) в нескольких случаях. Теперь проблема заключается в том, что мое приложение состоит из нескольких «виджетов», которые могут содержать другие виджеты. Это может создать своего рода круг в вызовах шаблонов.
Пример:
home.html:
<div> some html stuff </div>
<widget1 *ng-for="#widget of widgetList" [widget]="widget"></widget1>
widget1.html:
<div> some html stuff unique to widget1 </div>
<div *ng-if="widget.widgetSubList">
<div *ng-for="#widget of widget.widgetSubList">
<div [ng-switch]="widget.type">
<p *ng-switch-when="2"><widget2 [widget]="widget"></></widget2></p>
<p *ng-switch-when="3"><widget3 [widget]="widget"></></widget3></p>
</div>
</div>
</div>
widget2.html
<div> some html stuff unique to widget2 </div>
<div *ng-if="widget.widgetSubList">
<div *ng-for="#widget of widget.widgetSubList">
<div [ng-switch]="widget.type">
<p *ng-switch-when="1"><widget1 [widget]="widget"></></widget1></p>
<p *ng-switch-when="3"><widget3 [widget]="widget"></></widget3></p>
</div>
</div>
</div>
widgetSubList это свойство виджета, заполняется, если он s-sub-widgets, ng-if работает в этом случае и не разбивает код, если нет суб-виджетов.
В этом случае происходит сбой, так как он создает упомянутый «круг» виджетов, содержащих виджеты, которые были в вышеупомянутой части дерева, поскольку виджет1 может вызывать widget2, который может снова вызвать виджет1. Я не могу изменить эту структуру, поскольку это предопределено API, который я использую в этом случае.
Итак, теперь вопрос: есть ли способ получить эту работу?
Поскольку все виджеты требуют разных реализаций, я не могу их обойти, не создавая один гигантский html-файл, заполненный ng-ifs, чего я бы хотел избежать.
PS: Я немного изменил пример, чтобы лучше представить код. @ Входящая часть присутствует в файлах .ts.
Прямо сейчас, я только зачитал еще один уровень подвижов из API для целей тестирования.
Некоторые конкретное сообщение об ошибке? –
У меня есть вызов ng-for в моем home.html, примерно так: '* ng-for =" # widget of widgetList "'.Вся ошибка говорит мне, что он не может вызывать свойство «forEach» неопределенного или Nullreference. Поэтому я предполагаю, что вызов «круг» ломается, и поэтому он затмевает ng-for. – m41n
Можно ли создать плункер, который позволяет воспроизводить? –