我目前正在尝试在Angular 5中创建一个可以从数据库加载的菜单 . 现有菜单看起来像这样:

<ul class="nav navbar-nav" style="padding-top: 14px;">
   <li [routerLinkActive]="['link-active']" *ngIf="isAdmin">
       <a [routerLink]="['/fetch-data']">
          <i class="fa fa-snowflake-o"></i>
          <div>Fetch data</div>
       </a>
   </li>
</ul>

我还没有加载数据 - 我试图证明它可以做我想要的一切 .

我已经创建了一个组件,我打算为其构建菜单 . 我希望做的是生成现有菜单的所有当前行为,但是从我的组件中生成 . 那段代码在这里:

import { Component, Input, Renderer2, ElementRef, OnInit } from "@angular/core";

@Component({
    selector: "my-menu",
    template: ""
})
export class MyMenuComponent implements OnInit {

    constructor(private readonly renderer: Renderer2, private readonly el: ElementRef) { }

    ngOnInit() {
        const ul = this.renderer.createElement("ul");
        this.renderer.addClass(ul, "nav");
        this.renderer.addClass(ul, "navbar-nav");
        this.renderer.addClass(ul, "navbar-padding");

        const li = this.renderer.createElement("li");
        this.renderer.setAttribute(li, "routerLinkActive", "link-active");

        const a = this.renderer.createElement("a");
        this.renderer.setAttribute(a, "routerLink", "/fetch-data");

        const i = this.renderer.createElement("i");
        this.renderer.addClass(i, "fa");
        this.renderer.addClass(i, "fa-birthday-cake");
        this.renderer.appendChild(a, i);

        const div = this.renderer.createElement("div");
        const text = this.renderer.createText("Fetch data");
        this.renderer.appendChild(div,text);
        this.renderer.appendChild(a, div);

        this.renderer.appendChild(li, a);
        this.renderer.appendChild(ul, li);

        this.renderer.appendChild(this.el.nativeElement, ul);
    }

}

问题在于,当我生成routerLinkActive和routerLink属性时,它们实际上不起作用 . 也就是说,它们尚未被处理为角度属性 . 如何让它们被识别为角度属性,这样当我点击它们时,它会带我到正确的路线?