angular - 如何在 Angular 中显示继承对象列表?
问题描述
我想显示从 Angular 中的同一个抽象类继承的不同对象的列表。这样做的好习惯是什么?
让我们假设以下简单模型:
abstract class Vehicle {
wheels: number;
}
class Car extends Vehicle {
isConvertible: boolean;
}
class Truck extends Vehicle {
freight: string;
}
我的方法有效,但它似乎很丑陋,而不是 oop 方式。
HTML 模板:
<ul>
<li *ngFor="let vehicle of vehicles">
<p>{{vehicle.wheels}}</p>
<p *ngIf="isCar(vehicle)">{{asCar(vehicle).isConvertible}}</p>
<p *ngIf="isTruck(vehicle)">{{asTruck(vehicle).freight}}</p>
</li>
</ul>
零件:
@Component({
[...]
})
export class VehicleInfoComponent{
@Input() vehicles: Vehicles[];
public isCar(vehicle: Vehicle): boolean {
return vehicle instanceof Car;
}
public isTruck(vehicle: Vehicle): boolean {
return vehicle instanceof Truck;
}
public asCar(vehicle: Vehicle): Car{
return vehicle as Car;
}
public asTruck(vehicle: Vehicle): Truck{
return vehicle as Truck;
}
}
有没有更好的 oop 方法来做到这一点?
解决方案
我不知道它是否比你的更好,或者它是否有任何好处。如果你喜欢,试着做你想做的事。希望它是有用的。
@Component({
[...]
})
export class ActionInfoComponent{
@Input() vehicles: Vehicles[]
public getClass(vehicle: Vehicle): string{
return vehicle.constructor.name
}
}
和 HTML
<ul>
<li *ngFor="let vehicle of vehicles">
<p>{{vehicle.wheels}}</p>
<p *ngIf="getClass(vehicle) == 'Car'">{{vehicle.isConvertible}}</p>
<p *ngIf="getClass(vehicle) == 'Truck'">{{vehicle.freight}}</p>
</li>
</ul>
推荐阅读
- java - 如何在不使用静态上下文中的类名的情况下访问 java 中的 .class 对象
- django - django mongo db not in query error while 检查名称是否存在于列表中
- java - 软键盘隐藏编辑文本
- android-studio - 无法在 MacOS 上的 Android Studio 3.2.1 中查看 logcat 工具窗口
- php - 如果列不包含数组中的值,则插入新记录
- sql - SQL合并两个查询并为微积分插入一个新列
- createjs - 如何让文本对象动态更改文本?
- php - 分支之间的 GIT 变化
- python - 从子图元素中获取已打印标签的列表,以避免在图例中重复输入
- sql - 为什么当我向服务器发送关键字=C++ 服务器时会滴加号?