gpt4 book ai didi

Angular 4 : How to access element inside ng-template

转载 作者:太空狗 更新时间:2023-10-29 17:58:51 25 4
gpt4 key购买 nike

我有一个 View ,其中包含 MD-Dialog 的 ng 模板。

<ng-template #template>
<h2 md-dialog-title>{{title}}</h2>
<div md-dialog-content #content></div>
</ng-template>

我必须用动态组件替换#content 的地方。

对应的组件类是,

export class CustomDialogComponent implements OnInit, AfterViewInit {

title: string;

@ViewChild('content', { read: ViewContainerRef }) container;

@ViewChild('template') template: TemplateRef<any>;

constructor(public dialog: MdDialog,
private componentFactoryResolver: ComponentFactoryResolver) { }

ngOnInit() {
}

open(component: any, options: any): void {

this.title = options.title;
console.log(this.container)
const dialogRef = this.dialog.open(this.template, options);
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
this.container.clear();
const comp = this.container.createComponent(componentFactory);
comp.instance.setData(options.data);

}

close() {
this.dialog.closeAll();
}

ngAfterViewInit() {
console.log(this.container)
}
}

但是我在 open() 方法中得到 this.container 未定义。请帮忙。

最佳答案

模板中的模板只有在初始化 View 时才能访问,所以angular 8之后,使用ViewChild时,可以使用parameter{static: false}这样你就可以在初始化 View 时拥有内部模板的实例

@Viewchild('content', {static: false}) innerConttent: TemplateRef<any>;

关于 Angular 4 : How to access element inside ng-template,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46950068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com