Как я могу использовать / создать динамический шаблон для компиляции динамического компонента с Angular 2.0?
я бы хотелдинамично Создайтешаблон, Это должно быть использовано для созданияComponentType
ввремя выполнения и место(даже заменить) это где-то внутри хостинг-компонента.
До RC4 я пользовалсяComponentResolver
, но с RC5 я получаю сообщение:
ComponentResolver
не рекомендуется для динамической компиляции. использованиеComponentFactoryResolver
вместе с@NgModule/@Component.entryComponents
или вместо ANALYZE_FOR_ENTRY_COMPONENTS провайдера.Только для времени компиляцииВы также можете использоватьCompiler.compileComponentSync/Async
.
Я нашел этот (официальный angular2) документ
Angular 2 Синхронное Динамическое Создание КомпонентовИ понимаю, что я могу использовать либо
Вид динамическогоngIf
сComponentFactoryResolver
, Если я передам известные компоненты на хостинг внутри@Component({entryComponents: [comp1, comp2], ...})
- Я могу использовать.resolveComponentFactory(componentToRender);
Реальная компиляция во время выполнения, сCompiler
...Но вопрос в том, как это использоватьCompiler
? Примечание выше говорит, что я должен позвонить:Compiler.compileComponentSync/Async
- так как?
Например. Я хочу создать(на основании некоторых условий конфигурации) этот вид шаблона для одного вида настроек
<form>
<string-editor
[propertyName]="'code'"
[entity]="entity"
></string-editor>
<string-editor
[propertyName]="'description'"
[entity]="entity"
></string-editor>
...
а в другом случае этот(string-editor
заменяется наtext-editor
)
<form>
<text-editor
[propertyName]="'code'"
[entity]="entity"
></text-editor>
...
И так далее(другой номер / дата / ссылкаeditors
по типам свойств, пропущены некоторые свойства для некоторых пользователей ...), То есть это пример, реальная конфигурация может генерировать гораздо больше разных и сложных шаблонов.
шаблон меняетсяпоэтому я не могу использоватьComponentFactoryResolver
и передать существующие ... Мне нужно решение сCompiler
Хотели бы вы использовать эту функцию с AOT (заблаговременная компиляция)? Вы получаете:
Ошибка: обнаружена ошибка при статическом разрешении значений символов. Вызовы функций не поддерживаются. Попробуйте заменить функцию или лямбду ссылкой на экспортированную функцию (позиция 65:17 в исходном файле .ts), разрешив символ COMPILER_PROVIDERS в ... / node_modules/@angular/compiler/src/compiler.d.ts,
Пожалуйста, оставьте свой комментарий, проголосуйте здесь:
Может / будет / будет ли код с использованием COMPILER_PROVIDERS поддерживаться AOT?