I try to bootstrap my main angular component in a pre-executed HTML Document.
This is my existing DOM :
<html>
<head></head
<body>
<!-- this is my template generated with Symfony -->
<div ...>
<ul>
<li><angularComponent></angularComponent></li>
<li><angularComponent></angularComponent></li>
</ul>
</div>
</body>
</html>
I want to bind my Main App Component (or Directive) on body, or on the main div, without replacing my pre generated content (with symfony).
It is possible ? Have you other solution ?
Thanks,
Usually this is done by adding <ng-content></ng-content>
to the template of your Angular AppComponent
s template, but AFAIK this is not supported on the application component, only on child components.
You could try to set encapsulation: ViewEncapsulation.Native
on the AppComponent
und use <content></content>
instead of <ng-content></ng-content>
.
I haven't tried this myself yet.
Ok, so i haven't found any good answers to this question, here's the (hacky) way I did it:
document.getExistingContentByTag = function(tagName){
var target = document.getElementsByTagName(tagName)[0];
if(!target || !target.tagName) return '';
return target.innerHTML;
}
And to render the template:
@Component({
selector: 'my-app',
template: document.getExistingContentByTag('my-app')
})
So it pulls the content of the my-app tag, does its magic and writes it back.