I have a question regarding dynamic component creation in Angular 2 rc5.
So let's assume that we have two plain angular components:
@Component({
template: `
<div id="container">
<h1>My Component</h1>
</div>
`,
selector: 'my-app'
})
export class AppComponent { }
@Component({
template: '<p>{{text}}</p>',
selector: 'simple-cmp'
})
export class SimpleComponent { public text='Hello World!' }
Then some external non-angular chunck of code modificates a DOM:
let newNode = document.createElement('div');
newNode.id = 'placeholder';
document.getElementById('container').appendChild(newNode);
Here is some presumable tree after manipulations:
<div id="container">
<h1>My Component</h1>
<div id="placeholder"></div>
</div>
So what I'm trying to do is just dynamically add SimpleComoponent instance into #placeholder div. How can I achieve this result?
I've been trying using ComponentFactory.createComponent(injector, [], newNode), it added the component though, but neither life cycle hooks nor binding not worked at all.
I believe there is some way to implement this using ViewContainerRef, but how can I link it with dynamically created node?
Here is the result I expect
<div id="container">
<h1>My Component</h1>
<div id="placeholder">
<simple-cmp>Hello world!</simple-cmp>
</div>
</div>
Thanks!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…