通过模板渲染时,材质列表项看起来不同

时间:2017-10-23 09:03:32

标签: angular angular-material

我有一个Angular Material列表,我想根据外部提供的模板渲染项目。但是,这似乎会影响mat-list-item组件呈现内容的方式,尤其是matLine个孩子的内容。

按如下方式明确定义项呈现如下:

<mat-list>
  <mat-list-item *ngFor="let item of items">
    <h4 matLine [title]="item.name">{{item.name}}</h4>
    <p matLine class="item-id">{{item.id}}</p>
  </mat-list-item>
</mat-list>

但是,当使用模板(提供为@ContentChild)时,呈现的列表最终看起来不同:

<mat-list>
  <mat-list-item *ngFor="let item of items">
    <ng-template [ngTemplateOutlet]="template" [ngTemplateOutletContext]="{$implicit: item}"></ng-template>
  </mat-list-item>
</mat-list>

传入的模板:

<ng-template let-item>
  <h4 matLine [title]="item.name">{{item.name}}</h4>
  <p matLine class="item-id">{{item.id}}</p>
</ng-template>

一个示例差异是前一个示例最终将matLine包装成div.mat-list-text元素,而后者不会。

为什么这两个示例的行为不同,我如何对齐它们呢?

更新

看起来问题是mat-list-item会有选择地使用<ng-content select="...">转让所提供的孩子。 从a bug report来看,这似乎不适用于目前通过模板提供的内容孩子。

0 个答案:

没有答案