我的问题是设计问题:
我想实现一个多步骤表单。因此,例如,如果我有 4 个步骤,那么我有 4 个组件,其中每个组件都是多步骤表单中的一个步骤
有一个父组件将其内部的视图与活动的步骤组件进行切换
选项1
在父组件和每个子组件之间使用双向绑定。确认表单后(最后一步),我可以在父组件中使用表单数据。例如:
<div class="tab-content">
<personal-step
*ngIf="currentStep == 'personalStep'"
[(personal)]="personalData"></personal-step>
<work-step
*ngIf="currentStep == 'workStep'"
[(work)]="workData"></work-step>
<address-step
*ngIf="currentStep == 'addressStep'"
[(address)]="addressData"></address-step>
<confirmation-step
*ngIf="currentStep == 'confirmationStep'"
(confirm)="formConfirmed()"></confirmation-step>
</div>
选项#2
使用 FormDataService 将被注入到每个子组件中。步骤的呈现将通过路由机制完成。确认表单后(最后一步),我可以在 ConfirmationComponent 或我的父组件中使用注入的 FormDataService 并使用表单数据
<div class="tab-content">
<!-- Routed view -->
<router-outlet></router-outlet>
</div>
和一个 FormDataService
export class FormDataService {
private formData: FormData = new FormData();
getPersonal(): Personal {
return this.formData.personal
}
setPersonal(data: Personal) {
this.formData.personal = data;
}
getWork(): Work {
return this.formData.work
}
setWork(data: Work) {
this.formData.work = data;
}
getAddress(): Address {
return this.formData.address
}
setAddress(data: Address) {
this.formData.address = data;
}
}
我想知道您是否可以帮我找出每种方法的优缺点,并分享您会采用哪种方法
谢谢