Renderer2通过selectRootElement选择元素使其内容消失

HDJ*_*MAI 3 css angular angular-renderer2

当尝试使用 Renderer2 创建选项卡组件来选择选项卡元素,并尝试添加一些 css 类来更改颜色(例如当前未选择的选定选项卡)时,HTML 元素从 DOM 中完全消失:

这是选项卡 html 模板:

<div class="detail-nav">
    <div class="nav-item-1">
      <a routerLink="main-config" routerLinkActive="active" (click)=actionItem1()>
        <span>Main config</span>
      </a>
    </div>
    <div class="nav-item-2">
      <a routerLink="sub-config" routerLinkActive="active" (click)=actionItem2()>
        <span>Handling data</span>
      </a>
    </div>
    <div class="nav-item-3">
      <a routerLink="editing" routerLinkActive="active" (click)=actionItem3()>
        <span>Editing</span>
      </a>
    </div>
<div>
Run Code Online (Sandbox Code Playgroud)

我添加了一些 css 以使锚标记与父 div 具有相同的高度,

所以当使用 Renderer2 时:


...

constructor(private route: ActivatedRoute, private renderer: Renderer2) {}

...

let elm = this.renderer.selectRootElement(".nav-item a");

this.renderer.addClass(elm, 'nav-item');
Run Code Online (Sandbox Code Playgroud)

CSS:

.nav-item {
  background-color: LightBlue;
}
Run Code Online (Sandbox Code Playgroud)

然后执行时 achor 标签会从 DOM 中完全消失:

.nav-item {
  background-color: LightBlue;
}
Run Code Online (Sandbox Code Playgroud)

这有什么原因吗?

可能是 selectRootElement 的工作方式有问题?

有人对此有什么想法吗?

我已经在 devtools 中验证了 elm 通过悬停打印的 elm 变量在调试模式下引用了正确的元素。

Ame*_*mar 7

这是 的默认行为selectRootElement()查看文档

要保留内容,请传递第二个(布尔值)参数,如下所示:

let elm = this.renderer.selectRootElement(".nav-item a", true);