可以在 Angular 5 Typescript 中为 [innerhtml] 读取具有 属性 绑定的模板吗?

Can templates with property bindings be read for [innerhtml] in Angular 5 Typescript?

当我开始导航时 (./header.component.html) 就像...

      <div class="collapse navbar-collapse" id="navbarSupportedContent" [innerHTML]="navInnerHTML">
      </div>

与组件 (./header.component.ts)

    import { Component, OnInit } from '@angular/core';

    @Component({
      selector: 'app-header',
      templateUrl: './header.component.html',
      styleUrls: ['./header.component.css']
    })
    export class HeaderComponent implements OnInit {
      navInnerHTML = '';
      mainNav = [];
      sideUserNav = [];
      constructor() { }

      ngOnInit() {
        this.configureNavigation();
      }
      configureNavigation() {
        console.log('Loading navigation...');
        this.clearNavigation();
        this.loadUserNavigation();
      }
      clearNavigation() {
        this.navInnerHTML = ``;
        this.mainNav = [];
        this.sideUserNav = [];
      }
      loadUserNavigation() {
        this.mainNav.push(
            {type: 'link', path: 'home', title: 'Home'},
            {type: 'dropdown', path: '', title: 'Sample', subNavID: 'Sample_DML', subNav: [
                    {type: 'link', path: 'sd-Sample', title: 'Sample'},
                    {type: 'link', path: 'sd-Sample/ef', title: 'SampleEF'},
                    {type: 'link', path: 'sd-Sample/pf', title: 'SamplePF'}
                ]}
        );
        let navInnerHTMLString = ``;
        if (this.mainNav.length > 0) {
          navInnerHTMLString += `<ul class="navbar-nav mr-auto">`;
          for (const menu of this.mainNav) {
            navInnerHTMLString += `<li`;
            navInnerHTMLString += ` class = "nav-item` + ((menu.type === 'dropdown') ? ` dropdown" ` +
              `ngbDropdown` : `"`);
            navInnerHTMLString += ` [routerLinkActive]="['active']"`;
            navInnerHTMLString += `>`;
            navInnerHTMLString += `<a`;
            navInnerHTMLString += ` class = "nav-link` + ((menu.type === 'dropdown') ? ` dropdown-toggle" ` +
              `ngbDropdownToggle` : `"`);
            navInnerHTMLString += ((menu.type === 'link') ? ` [routerLink]="['` + menu.path + `']"` : ``);
            navInnerHTMLString += ` `;
            navInnerHTMLString += ((menu.type === 'dropdown') ? `id="` + menu.subNavID + `"` +
              ` aria-haspopup="false" aria-expanded="false"` : ``);
            navInnerHTMLString += ` style="cursor:pointer;"`;
            navInnerHTMLString += `>`;
            navInnerHTMLString += menu.title;
            navInnerHTMLString += ((menu.title === 'Home') ? `<span class="sr-only">(current)</span>` : ``);
            navInnerHTMLString += `</a>`;
            /*div for subNav goes here.*/
            navInnerHTMLString += `</li>`;
          }
          navInnerHTMLString += `</ul>`;
        }
        this.navInnerHTML = navInnerHTMLString;
      }
    }

我正在努力让它看起来像

    <div class="collapse navbar-collapse" id="navbarSupportedContent" [innerHTML]="navInnerHTML">
        <li class="nav-item" [routerLinkActive]="['active']">
          <a class="nav-link" [routerLink]="['home']" style="cursor:pointer;">Home <span class="sr-only">(current)</span></a>
        </li>

        <li class="nav-item dropdown" ngbDropdown [routerLinkActive]="['active']">
          <a class="nav-link dropdown-toggle" ngbDropdownToggle style="cursor:pointer;" id="sampleDML" aria-haspopup="false" aria-expanded="false">
            Sample
          </a>
          <div class="dropdown-menu" ngbDropdownMenu aria-labelledby="sampleDML">
            <a class="dropdown-item" [routerLink]="['sd-Sample']">Sample</a>
            <a class="dropdown-item" [routerLink]="['sd-Sample/ef']">SampleEF</a>
            <a class="dropdown-item" [routerLink]="['sd-Sample/pf']">SamplePF</a>
          </div>
        </li>
    </div>

但是 ff。不会显示在元素上(Chrome 的检查元素):

1.) [routerLinkActive]="['active']" 表示活动或 [routerLink]="['sd-Sample']" 表示 href

2.) ngbDropdown 和 ngbDropdownToggle 属性。

可以在 Angular 5 Typescript 中为 [innerhtml] 读取具有 属性 绑定的模板吗? 或者如何?

我有点滥用 ng-container 而不需要内部 HTML 比如...

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav mr-auto" *ngIf="mainNav">
        <ng-container *ngFor="let menu of mainNav">
          <li *ngIf="menu.type=='link'" class="nav-item" [routerLinkActive]="['active']">
            <a class="nav-link" [routerLink]="menu.path" style="cursor:pointer;">{{menu.title}}
              <span *ngIf="menu.path=='home'" class="sr-only">(current)</span>
            </a>
          </li>
          <li *ngIf="menu.type=='dropdown'" class="nav-item dropdown" ngbDropdown [routerLinkActive]="['active']">
            <a class="nav-link dropdown-toggle" ngbDropdownToggle style="cursor:pointer;" id="menu.subNavID" aria-haspopup="false" aria-expanded="false">
              {{menu.title}}
            </a>
            <div class="dropdown-menu" ngbDropdownMenu aria-labelledby="menu.subNavID">
              <ng-container *ngFor="let subMenu of menu.subNav">
                <a *ngIf="subMenu.type=='link'" class="dropdown-item" [routerLink]="subMenu.path">{{subMenu.title}}</a>
              </ng-container>
            </div>
          </li>
        </ng-container>
      </ul>
    </div>