如何在角材料列表中使用项目组件

问题描述 投票:0回答:1

我正在尝试将Angular代码从Bootstrap迁移到Material design。我需要显示项目列表(例如汽车)。我有一个汽车清单组件和汽车项目组件。如果可能,我想将其分开。

不幸的是,得到的10个项目的列表显示为一行上的10个方形框,而不是预期的10行。

我的问题是:我可以在<mat-list-item>中使用单独的组件吗?

我遇到的所有角材料示例都显示了mat-list-item,其中的节点内部包含ngFor指令和项目模板代码。这意味着将项目功能移到列表中。

Bootstrap版本

car-list-component.html

<div class="row">
  <div class="col-xs-12">
    <router-outlet></router-outlet>
    <app-car-item
      *ngFor="let carItem of cars"
      [car] = "carItem"
    ></app-car-item>
  </div>
</div>

car-item.component.html

<div>
  <div>
    <a (click)="carDetail(car.id)">
      <span>{{ getMakeLabel(car.make)}} : {{car.carModel.modelName}} </span>
    </a>
  </div>
  <div>
    <a (click)="remove(car)"><i class="material-icons">delete</i>
    </a>
  </div>
</div>

带有单独项目模板的我的Angular Material版本

car-list.component.html

<div>
<mat-list role="list">
  <mat-list-item>
    <router-outlet></router-outlet>
    <app-car-item
      *ngFor="let carItem of cars"
      [car] = "carItem"
    ></app-car-item>
  </mat-list-item>
</mat-list>
</div>

car-item.component.html不变。

带有“内联”项目模板的角材料示例。

这在有关Angular Material的所有示例和教程中都有介绍。它对我有用,但是正如我之前说的,如果Item(car)是比本示例更复杂的对象,那么我想单独保存它。

car-list.component.html

<mat-list>
    <mat-list-item *ngFor="let car of cars">
      <a style="cursor: pointer;" (click)="carDetail(car.id)">
       <span>{{ getMakeLabel(car.make)}} : {{car.carModel.modelName}} </span>
      </a>
    </mat-list-item>
</mat-list>
angular angular-material
1个回答
0
投票

@@ Vladimir,只需将mat-list-item作为指令添加到您的app-car-item组件。请参考https://stackblitz.com/edit/angular-blzeb1

<mat-list role="list">
    <app-car-item mat-list-item
      *ngFor="let carItem of cars"
      [car] = "carItem"
    ></app-car-item>
 </mat-list>
© www.soinside.com 2019 - 2024. All rights reserved.