实现订单发货弹窗组件(ShippingModalComponent),用于商家填写物流信息并完成订单发货操作。
创建了以下文件:
shipping-modal.component.ts - 组件逻辑shipping-modal.component.html - 组件模板shipping-modal.component.scss - 组件样式shipping-modal.component.spec.ts - 单元测试getFullAddress() 方法拼接完整地址/^[A-Za-z0-9]+$/实现了完整的表单验证:
提供友好的错误提示信息:
{ companyCode, companyName, trackingNo }MatDialog 服务ShippingModalComponent 和相关类型showShippingModal(order: Order): void {
const dialogRef = this.dialog.open(ShippingModalComponent, {
width: '600px',
maxWidth: '90vw',
data: { order },
disableClose: false,
autoFocus: true
});
dialogRef.afterClosed().subscribe((result: ShippingFormData | undefined) => {
if (result) {
this.submitShipping(order.orderNo, result);
}
});
}
MockOrderService.shipOrder() 提交物流信息实现了 18 个测试用例,覆盖:
所有测试均通过 ✓
MAT_DIALOG_DATA 注入对话框数据MatDialogRef 控制对话框关闭afterClosed() 获取返回值FormBuilder 创建表单Validators 进行验证markAsTouched() 触发验证显示OrderListComponent
→ 打开 ShippingModalComponent
→ 用户填写表单
→ 提交返回数据
→ OrderListComponent 调用 API
→ 刷新列表
src/app/pages/orders/components/shipping-modal/shipping-modal.component.tssrc/app/pages/orders/components/shipping-modal/shipping-modal.component.htmlsrc/app/pages/orders/components/shipping-modal/shipping-modal.component.scsssrc/app/pages/orders/components/shipping-modal/shipping-modal.component.spec.tssrc/app/pages/orders/order-list/order-list.component.ts
ShippingModalComponent 已成功实现,提供了完整的订单发货功能:
组件已集成到 OrderListComponent 中,可以正常使用。