Je veux créer des composants dynamiques, et d'insérer des points de vue de ces composants dans un conteneur.
Je pense que cela peut être réalisé par ViewContainerRef.
Mais je ne sais pas, peut-on obtenir ViewContainerRef
d'un composant? si oui, alors comment faire?.
Je suis nouveau sur Angulaire, si il y a d'autres bonnes solutions disponibles pour ce cas de figure, merci de me suggérer.
Mise à jour Je pense, je suis à peu près près de la solution. Ci-dessous est le code.
app.composante.ts
import {Component} from '@angular/core';
import {ContainerComponet} from './container.component'
@Component({
selector: 'my-app',
template: `
<container> </container>
`,
directives: [ContainerComponet]
})
export class AppComponent {
constructor() { }
}
le conteneur.composante.ts
import {Component, ComponentResolver, ViewContainerRef} from '@angular/core'
import {controlBoxComponent as controlBox} from './controlBox.component';
@Component({
selector: 'container',
template: 'container'
})
export class ContainerComponet {
constructor(viewContainer: ViewContainerRef, private _cr: ComponentResolver) {
this._cr.resolveComponent(controlBox)
.then(cmpFactory => {
const ctxInjector = viewContainer.injector;
return viewContainer.createComponent(cmpFactory, 0, ctxInjector);
})
}
}
controlBox.composante.ts
import {Component} from '@angular/core'
@Component({
selector: 'controlBox',
template: 'controlBox'
})
export class controlBoxComponent {
constructor() { }
}
Sortie
<my-app>
<container>container</container><controlbox _ngcontent-lsn-3="">controlBox</controlbox>
</my-app>
Résultat Attendu
<my-app>
<container>container
<controlbox _ngcontent-lsn-3="">controlBox</controlbox>
</container>
</my-app>