angular - Angular Material Select Dropdown,发出整个对象项,而不仅仅是一个值
问题描述
Angular Material 选择下拉 API 只发出一个值。两者都只发出一个成员,[(ngModel)]
而(selectionChange)
不是整个对象数据字段。
例如,它只发出 food.value = 2,不会发出其他行列表项的类字段,如 foodName、foodDescription、foodWeight 等(需要发出 listId 的所有对应成员)
给定 food.value ,我如何发射整个对象作为食物?需要为将来创建的任何材料下拉菜单工作,而不仅仅是特定情况。Material Angular 是否有任何特定的选项来允许这样做?
下面的答案仅适用于一个特定示例,试图查看更大的图片。
https://material.angular.io/components/select/api
<mat-form-field>
<mat-label>Favorite food</mat-label>
<mat-select>
<mat-option *ngFor="let food of foods" [value]="food.value">
{{food.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
类示例,对于 2,需要 foodCategory、Calories 等字段等
export class SelectOverviewExample {
foods: Food[] = [
{value: '0', viewValue: 'Steak', foodCategory: 'Meat', Calories: 50},
{value: '1', viewValue: 'Pizza', foodCategory: 'Carbs', Calories: 100},
{value: '2', viewValue: 'Apple', foodCategory: 'Fruit', Calories: 25}
];
}
有没有人有更好的解决方案?selectionChange
否则,将在onOutput 方法
中写入此内容。似乎Angular Materials会有更好的选择,
this.foods.find(x=>x.value =="2")
注意以下解决方案;需要为任何不同的类、具有多种类型的成员等提供解决方案
解决方案
<mat-form-field>
<mat-label>Favorite food</mat-label>
<mat-select>
<mat-option *ngFor="let food of foods; let i = index" [value]="i" (onSelectionChange)="onValueChange(food)">
{{food.viewValue}}
</mat-option>
</mat-select>
</mat-form-field>
推荐阅读
- c++ - 无法添加命名顶点(根据教程)
- php - 如何修改字符串中确定的一组字符?我需要以数字方式修改它们
- angular - Angular8:如果没有返回数据,则路由到 404,BEFORE 组件显示
- c# - 为什么“€”字符只在打印机初始化之前打印,而不是在初始化之后?
- javascript - 为什么我得到 ENONET:当文件存在时没有这样的文件或目录?节点.js
- regex - Datadog 正则表达式查找具有双引号的文本
- javascript - 创建 2 个子 Div 的细分并在附加的子 Div 上添加动态唯一 ID?
- java - Mongock 和 @Value 注释似乎不起作用
- apache-kafka - kafka生产者的多个实例
- java - Java Swing JLabel.setIcon() 没有按我预期的方式工作