Ответ 1
Как прокомментировал @Devcon
Angular будет санировать почти все, поэтому вы получение простого текста. То, что вы хотите посмотреть, это ReflectiveInjector и главным образом ComponentFactoryResolver. Основная идея заключается в том, что компоненты требуется какая-то другая информация (услуги, другие компоненты и т.д.), которые будут отображаться, поэтому вы используете Инжектор, чтобы получить Refendency Injection refs, тогда Компонент factory создает ваш компонент. Затем вы вставляете это в Ссылка ViewChild. Существует более сложный способ динамического которые используют компилятор и требуют ModuleWithComponentFactories, это то, что действительно использует angular.
И при поиске на angular я принимаю, что angular не следует делать таким образом.
Как я должен создать полностью динамическую страницу, которая должна отображаться в html. Я немного изменил свой json и использовал ng-container и ng-template и используя ngswitch Я сделал рекурсивный вызов в шаблоне и сам нашел его работу очень хорошо.
Я получаю много преимуществ, используя это: HTML (я визуализирую динамически) сам по себе в HTML, код чист и читабель, легко maitainable.
Приведенный здесь пример почти такой же, как я сделал. fooobar.com/questions/78818/...
Небольшой пример:
<ng-template #itemsList let-itemsList>
<div *ngFor="let item of itemsList;let i = index">
<div [ngSwitch]="item.itemType">
<div class="form-group" *ngSwitchCase="'TEXT'">
<label>
{{item.label}}
</label>
<input id="{{item.name}}" value="{{item.value}}" type='text' class='form-control txtbox ui-autocomplete-input'/>
</div>
<div class="form-group" *ngSwitchCase="'PASSWORD'">
<label>
{{item.label}}
</label>
<input id="{{item.name}}" value="{{item.value}}" type='password' class='form-control txtbox ui-autocomplete-input'/>
</div>
<div class="form-group" *ngSwitchCase="'BOOLEAN'">
<label style='width:40%'>{{item.label}}</label>
<div class="form-group"><input id="{{item.name}}" type='checkbox' /></div>
</div>
<div class="form-group" *ngSwitchCase="'LABEL'">
<label class="form-control">{{item.label}}</label>
</div>
<div class="form-group" *ngSwitchDefault>
<label>
{{item.label}}
</label>
<select2 class="form-control" [data]="GetDropDowndata(item.holderId)" [cssImport]="false" [width]="300" [options]="GetOptions(item.type)"></select2>
</div>
</div>
</div>