Angular 如何在“角度”对话框中对多选下拉列表中的多个值求和

Angular 如何在“角度”对话框中对多选下拉列表中的多个值求和,angular,typescript,angular-material,Angular,Typescript,Angular Material,我正在创建一个菜单,您可以在其中选择多个添加项,我正在尝试将这些值相加,以便以HTML显示总价。我已经使用了[(ngModel)]来捕获所选的第一个值,但希望添加所选的其他值以获得总价。我得到的不是总数,而是NaN 任何帮助都将不胜感激 这是我的HTML: 附加组件 {{addOn.addOnName}+${{addOn.addOnPrice}} 价格:{{+selectedddons} {{selectedAddOns}} 潜艇: 下面是我如何设置typescript文件的 selecte

我正在创建一个菜单,您可以在其中选择多个添加项,我正在尝试将这些值相加,以便以HTML显示总价。我已经使用了
[(ngModel)]
来捕获所选的第一个值,但希望添加所选的其他值以获得总价。我得到的不是总数,而是
NaN

任何帮助都将不胜感激

这是我的HTML:


附加组件
{{addOn.addOnName}+${{addOn.addOnPrice}}
价格:{{+selectedddons}

{{selectedAddOns}}

潜艇:
下面是我如何设置typescript文件的

selectedddons=0;
选择的DDonPrice=0;
addtoOrder:项目;
ngOnInit():void{
这个.getMenuItem();
}
//获取选定的菜单项并将其推送到详细信息页面
getMenuItem():void{
const name=this.route.snapshot.paramMap.get(“name”);
这是我的朋友
.getMenuItemDetail(名称)
.subscribe((items)=>(this.item=items));
}
updatePrice(事件:编号){
this.selectedAddOnPrice+=事件;
}
两件事:

  • 在您的typescript文件中,您似乎复制/粘贴了两次代码,这很混乱

  • 您有
    (ngModelChange)=“updatePrice($event)”
    ,它发送的是一个“事件”,而不是一个数字,其中updatePrice()函数将其视为一个数字。这可能是你的问题


  • 更可能的是,您需要做的是创建一个包含所有价格的数组,并在每个价格上设置一个真/假标志,以指示是否选择了这些价格。然后每次执行updatePrice时,都需要在数组中循环并计算价格。

    我明白了。谢谢你的意见。因此,如果我使用带有真/假标志的数组,我将如何处理有人选择和项目,然后取消选择同一项目的情况?最好在数据中添加一个“isSelectedFlag”,并在选中时切换它。