我有2个子组件,如下所示。
子组件1:
子组件2:
您可以看到其样式,位置等相同。但是内容不同。即图像和文字。因此,我想开发一个基于组件的100%Ionic / Angular应用程序。我在这里的问题是我需要在此处使用2个组件还是将相同的组件*ngIf
与@Input()
绑定一起使用,以根据父页面确定不同的文本和图像?
例如,这还好吗?或者我需要为这些用例提供2个完整的组件吗?在这里,它似乎与父母紧密相连。也就是说,由于其他地方的破损等原因,更改某些东西将需要大量的工作。我在这里错了吗?
<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>
在这种情况下,您只需要一个组件,一个哑组件。让我们将其命名为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句