6

我正在开发一个将下拉列表转换为radioListbox 的角度指令。这是我的初始代码:

import { Directive, Input, TemplateRef, ViewContainerRef,OnInit } from '@angular/core';

@Directive({
  selector: '[radioList]'
})
export class RadioListDirective implements OnInit  {



  constructor(private templateRef: TemplateRef<any>, private vcRef: ViewContainerRef) {

  }

  ngOnInit() {

    console.log(this.templateRef);
    this.vcRef.createEmbeddedView(this.templateRef);

  }
}

<div>
  test
</div>


<select *radioList><option>1</option><option>2</option></select>

它应该记录TemplateRefElementRef的 nativeElement 是一个select. 但结果是空注释,它的下一个元素是select.

在此处输入图像描述

4

1 回答 1

4

目前有效的 Hacky 解决方案:

抓住下一个兄弟姐妹:

this.templateRef.elementRef.nativeElement.nextSibling

使用 viewContainerRef.get

(this.viewContainerRef.get(0) as any).rootNodes[0]

(注意,从您使用的示例代码中,vcRef而不是viewContainerRef我在此处使用的。)

于 2019-02-21T21:59:41.100 回答