Voglio creare componenti dinamici e inserire viste di questi componenti in un contenitore.Come posizionare un componente dinamico in un contenitore
Penso che questo può essere raggiunto da ViewContainerRef.
Ma non lo so, possiamo ottenere ViewContainerRef
di qualsiasi componente? se sì allora come? Sono nuovo in Angular, se ci sono altre buone soluzioni disponibili per gestire questo scenario, per favore suggeriscimi.
aggiornato Penso, sono quasi vicino alla soluzione. Di seguito è riportato il codice.
app.component.ts
import {Component} from '@angular/core';
import {ContainerComponet} from './container.component'
@Component({
selector: 'my-app',
template: `
<container> </container>
`,
directives: [ContainerComponet]
})
export class AppComponent {
constructor() { }
}
container.component.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.component.ts
import {Component} from '@angular/core'
@Component({
selector: 'controlBox',
template: 'controlBox'
})
export class controlBoxComponent {
constructor() { }
}
uscita
<my-app>
<container>container</container><controlbox _ngcontent-lsn-3="">controlBox</controlbox>
</my-app>
Risultato previsto
<my-app>
<container>container
<controlbox _ngcontent-lsn-3="">controlBox</controlbox>
</container>
</my-app>
È segnato la domanda come risposta. In che modo hai utilizzato view child per correggere il componente figlio e renderlo rendering all'interno del nodo del modello principale? – WesW
@WesW puoi riferirti [questo esempio] (http://plnkr.co/edit/cM8ipPKZPrNjIqQtPPQb?p=preview) –
Grazie per un esempio semplice e chiaro @PremParihar – RobSeg