100% 基于组件 Angular/Ionic 应用程序开发

100% component based Angular/Ionic app development

我有 2 个 child 组件,如下所示。

Child 组件 1:

Child 分量 2:

可以看到它的样式、位置等都是一样的。但内容不同。即图像和文字。所以我想开发一个 100% 基于组件的 Ionic/Angular 应用程序。我的问题是我需要在这里使用 2 个组件还是使用具有 *ngIf@Input() 绑定的相同组件来根据 parent 页面确定不同的文本和图像?

例如这很好,还是我需要为这些用例准备 2 个完整的组件?在这里它似乎与 parent 紧密耦合。即由于其他地方的破坏等原因,改变一些东西需要大量的工作。我在这里错了吗?

<ion-grid>
  <ion-row>
    <ion-col size="12" class="ion-text-center padding-bottom-0">
      <h5 class="font-bold margin-top-bottom-5">{{'Client.Parcel-Delivery-Cost' | translate}}</h5>
    </ion-col>

    <ion-col size="12" class="padding-top-bottom-0 ion-text-center" *ngIf="isPickUp">
      <div>{{'Client.Parcel-Picked-Up-From-The-Location-And-Delivered-To-You' | translate}}</div>
    </ion-col>

    <ion-col size="12" class="padding-top-bottom-0 ion-text-center" *ngIf="!isPickUp">
      <div>{{'Client.Parcel-Picked-Up-And-Handed-Over-To-Respective-Courier' | translate}}</div>
    </ion-col>

    <ion-col size="12" class="padding-top-bottom-0 ion-text-center font-bold">
      <h4 class="margin-top-5 font-bold"> {{parcelDeliveryCost}}</h4>
    </ion-col>
  </ion-row>
</ion-grid>

angular是一个基于组件的框架。所以通常当你可以避免重写代码时,你最好这样做。特别是在这种情况下。它们的布局完全相同。

在这种特殊情况下,您只需要一个组件,一个哑组件。 让我们将其命名为 StepComponent

export class StepComponent implements OnInit {
@Input() details: DetailData;

constructor(){}
ngOnInit(){}

}

然后在模板中,您应该访问 details 属性 并呈现数据。 DetailData 类型只是一个模型,用于保存所有详细信息属性(例如名称、描述、图像)。

<h4>{{details.name}}</h4>
<p{{details.description}}</p>

还有一种不同的技术可用于重用某些逻辑,但在需要时呈现不同的内容。它被称为内容投影,这里有很好的解释: https://www.prestonlamb.com/blog/content-projection-in-angular