html - 当我使用 *ngFor 时,如何保存单选按钮单击?
问题描述
当我单击单选按钮时,我转到另一个视图(路线)并返回,未单击单选按钮。如何解决?我使用 *ngFor 来显示单选按钮的数据。
order-shipping.component.html:
<div class="card-header">
<input type="radio" name='shipping' (click)="calculatePrices.emit(shipping.price)"> {{shipping.name}}
<p class="card-text"> price: {{shipping.price}}</p>
</div>
订单运输.component.ts:
export class OrderShippingComponent implements OnInit {
@Input() shipping;
@Output() calculatePrices = new EventEmitter();
constructor() { }
ngOnInit() { }
}
order.component.html:
<app-order-shipping *ngFor="let shipping of shippings" [shipping]="shipping"
(calculatePrices)="this.cartService.calculatePrices($event)"> </app-order-shipping>
order.component.ts:
export class OrderComponent implements OnInit {
items = {};
shippings = [];
constructor(private cartService: CartService,
private shippingService: ShippingService) { }
ngOnInit() {
this.items = this.cartService.getItems();
this.shippingService.getShipping()
.subscribe(
res => this.shippings = res,
err => console.log(err)
);
}
}
解决方案
您将需要一种在退出时保存所选选项的方法。最简单的方法是使用服务
我们创建一个简单的服务,它有 2 个属性,aBehaviorSubject
和a,Observable
它的值来自BehaviorSubject
export class OrderService {
constructor() { }
selectedOrderSubject$ = new BehaviorSubject<null | string>(null)
selectedOrder$ = this.selectedOrderSubject$.asObservable()
}
下一步是读取这个值OnInit
并更新这个值OnDestroy
export class OrderComponent implements OnInit, OnDestroy {
shippings = ["Shipping A", "Shipping B"];
selectedShipping = "";
destroyed$ = new Subject();
calculatePrices(shipping) {
this.selectedShipping = shipping;
//this.cartService.calculatePrices($event)
}
ngOnInit() {
this.orderService.selectedOrder$
.pipe(takeUntil(this.destroyed$))
.subscribe({
next: order => (this.selectedShipping = order)
});
}
constructor(private orderService: OrderService) {}
ngOnDestroy() {
this.orderService.selectedOrderSubject$.next(this.selectedShipping);
this.destroyed$.next();
}
}
推荐阅读
- sql - 如何修复 SQL Server Data Tools 中的 OLE DB 错误
- c# - 如何从通过模型传递的 url 中删除 unwated 查询参数?
- html - 即使正在记录数据,Mat-Table 也没有显示任何内容(console.log)
- php - 如何使用表单插件在管理面板的页面中拥有多个表单
- python - 无法让 pandas dataframe.to_html 缩放/适合引导表
- mongodb - Mongo - 合并集合中的重复条目并删除旧条目
- regex - 与选择文件匹配的 Ant 模式不起作用
- swift - iOS App 与树莓派 BLE 通信
- python - 如何在 Django ManyToMany 关系中返回两个相关模型的字段?
- java - 无法解决依赖关系