angular – 检索与TemplateRef关联的变量的名称
说我有这个模板:
<div class="main__container"> <ng-template #test></ng-template> <ng-template #test2></ng-template> </div> 我通过以下方式检索对所有TemplateRef的引用: @ViewChildren(TemplateRef) private templates; 对于所有这些,我如何检索相关变量的名称?因此,对第一个模板进行“测试”,对另一个模板进行“test2”.我不是绝对想要使用变量,如果可以使用ng-template的属性,那就没关系.我尝试使用TemplateRef,ViewContainerRef和ElementRef,但每次都会返回对comment元素的引用. 解决方法
我设法使用TemplateRef的私有API来做到这一点.这是我目前使用的功能:
@ContentChildren(TemplateRef) templates: QueryList<TemplateRef<any>>; getTemplate(id: string): TemplateRef<any> { // FIXME: Should not use private API... return this.templates ? this.templates.find((template: any) => template._def.references[id]) : null; } 但这不适用于生产构建,实际上我发现你的帖子正在寻找另一个解决方案,如果我找到了某些内容或者向Angular github提交功能请求,我会更新. – 编辑 –
Link to documentation – 编辑2 – 这是指令源代码: @Directive({ selector: '[formeTemplate]' }) export class FormeTemplateDirective { @Input('formeTemplate') templateId; constructor(private host: TemplateRef<any>,private service: FormeTemplateService) { } ngOnInit() { this.service.register(this.templateId,this.host); } } 服务 : @Injectable() export class FormeTemplateService { private templates: Array<FormeTemplate>; constructor() { this.templates = new Array(); } register(id: string,ref: TemplateRef<any>) { this.templates.push(new FormeTemplate(id,ref)); } getTemplateRef(templateId: string) : TemplateRef<any> { let template = this.templates.find((template) => template.id === templateId); return template ? template.ref : null; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |