首页 > 解决方案 > 在里面使用 [innerHTML]

问题描述

我尝试使用[innerHTML]inside which 适用<mat-option><mat-select>下拉列表,但不适用于所选值。

版本:

在我的示例中,使用的代码是

<mat-form-field class="col-11">
  <mat-select 
    [(ngModel)]="node.nodeType" 
    (change)="nodeTypeChanged()" 
    placeholder="{{'node.node_type' | translate}}"
    [compareWith]="compareObjects">
    <mat-option 
      *ngFor="let item of nodeTypes" 
      [value]="item">
      <span [innerHTML]="item.iconVisual.iconCodeHtml"></span>
      <span> {{item.label}}</span>
    </mat-option>
  </mat-select>
</mat-form-field>

附加的屏幕截图中未选择未呈现任务图标的组合框,并且正确呈现了图标的选定组合框显示了问题。

选定的组合框:未呈现图标

在此处输入图像描述

未选中的组合框:呈现所有图标

在此处输入图像描述

在这里简化了 stackblitz 。

这是一个错误还是我错过了什么?

标签: angularbootstrap-4angular-material

解决方案


正确答案是使用<mat-select-trigger>元素:

像:

 <mat-select-trigger>
            <span [innerHTML]="nodeType.iconHtml"></span>
              <span> {{ nodeType.label }}</span>
        </mat-select-trigger>

这是完整示例的外观:在线演示

template: `
    <mat-form-field>
      <mat-select [(ngModel)]="nodeType" placeholder="NodeType">
      <mat-select-trigger>
        <span [innerHTML]="nodeType.iconHtml"></span>
          <span> {{ nodeType.label }}</span>
    </mat-select-trigger>
        <mat-option *ngFor="let item of nodeTypes" [value]="item">
          <span [innerHTML]="item.iconHtml"></span>
          <span> {{ item.label }}</span>
        </mat-option>
      </mat-select>
    </mat-form-field>
  `,
  styles: [
    `
      h1 {
        font-family: Lato;
      }
    `
  ]
})

推荐阅读