我想设置<ng-content>动态实例化组件的主体ComponentFactoryResolver.
我看到我可以使用输入和输出访问ComponentRef,但不能设置<ng-content>.
请注意<ng-content>我计划设置可以包含简单文本/可以跨越动态创建的组件
@Component({
selector: 'app-component-to-project',
template: `<ng-content></ng-content>`
})
export class ComponentToProject implements AfterContentInit {
ngAfterContentInit() {
// We will do something important with content here
}
}
@Directive({
selector: 'appProjectionMarker'
})
export class ProjectionMarkerDirective implements OnInit {
constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {
}
ngOnInit() {
const componentFactory: ComponentFactory<ComponentToProject> = this.componentFactoryResolver.resolveComponentFactory(ComponentToProject);
const componentRef: ComponentRef<ComponentToProject> = this.viewContainerRef.createComponent(componentFactory);
// Question: How to set content before the child's afterContentInit is invoked …Run Code Online (Sandbox Code Playgroud) 我正在尝试动态创建和显示组件,我需要将一些数据传递给它,以便它知道要显示什么。
这是我的代码:
html部分:
<div class="basicContainer">
<div class="projectsTreeContainer">
<input type="text" id="searchWord" placeholder="Search through projects"/>
<button (click)="loadAddProject()">Add new Project</button>
<app-projects-tree (onLoadProjectDetails)="loadProjectDetails($event)"
(onLoadWpDetails)="loadWpDetails($event)"
(onSelectAndLoadJobDetails)="loadJobDetails($event)"></app-projects-tree>
</div>
<div class="infoContainer">
<ng-container *ngComponentOutlet="details"></ng-container>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
成分:
export class ProjectsComponent implements OnInit {
details: Component;
private showWp: boolean;
constructor() {
}
loadProjectDetails(project: BasicProject): void {
this.details = new ProjectComponent(project);
}
Run Code Online (Sandbox Code Playgroud)
以及我想要动态创建和显示的组件:
export class ProjectComponent implements OnInit {
project: Project;
constructor(basicProject: BasicProject) {
this.project = new Project();
this.project.name = basicProject.name ;
}
Run Code Online (Sandbox Code Playgroud)
Ng 模块:
@NgModule({
declarations: [
AppComponent,
NavbarComponent, …Run Code Online (Sandbox Code Playgroud)