Angular 从动态生成的垫子中获取值 select
Angular get value from dynamically generated mat select
我正在使用 Angular material 制作如下所示的反应式表单:
Form
使用这段代码,我制作了一个动态生成的垫子 select 和一个输入,但我不知道如何从所有这些中获取值。
HTML:
<div *ngFor="let number of [].constructor(cantConsumibles)">
<mat-select placeholder="Selecciona un consumible" class="form-control"
formControlName="consumibles">
<mat-option *ngFor="let consumible of consumibles" [value]="consumible">
{{consumible.CodConsumible}}
</mat-option>
</mat-select>
<input matInput type="number" formControlName="consumibles" placeholder="Cantidad">
</div>
<div align="end">
<button mat-button (click)="agregarConsumible(true)"><mat-icon>add</mat-icon></button>
<button mat-button (click)="agregarConsumible(false)"><mat-icon>remove</mat-icon></button>
</div>
TS:
cantConsumibles: number = 0;
agregarConsumible(flag: boolean): void {
(flag) ? this.cantConsumibles++ : this.cantConsumibles--;
}
有什么想法吗?提前致谢
select API 文档说我们可以用 @Output() selectionChange: EventEmitter<C>
https://material.angular.io/components/select/api
注册一个更改
所以让我们在 select 上添加该方法以了解 selected 的内容。
<mat-select placeholder="Favorite food" (selectionChange)="onFoodSelection($event)">
<mat-option *ngFor="let food of foods" [value]="food.value">
{{ food.viewValue }}
</mat-option>
</mat-select>
然后我们 console.log 事件值,但也将事件值保存到变量以备后用。
@Component({
selector: 'material-app',
templateUrl: 'app.component.html'
})
export class AppComponent {
output: any;
foods = [
{value: 'product10', viewValue: 'Steak'},
{value: 'product20', viewValue: 'Pizza'},
{value: 'product30', viewValue: 'Tacos'},
{value: 'product40', viewValue: 'Lasagne'},
];
onFoodSelection(event:any) {
this.output = event.value;
console.log(event.value)
}
}
在其他元素([=27=]、输入、复选框等)上遵循相同的原则,获取模板更改事件并在 typescript 代码部分中执行一些操作。
下面是一个小例子:https://stackblitz.com/edit/material-select-change-event-binding-tta13p?file=app%2Fapp.component.ts
我正在使用 Angular material 制作如下所示的反应式表单:
Form
使用这段代码,我制作了一个动态生成的垫子 select 和一个输入,但我不知道如何从所有这些中获取值。
HTML:
<div *ngFor="let number of [].constructor(cantConsumibles)">
<mat-select placeholder="Selecciona un consumible" class="form-control"
formControlName="consumibles">
<mat-option *ngFor="let consumible of consumibles" [value]="consumible">
{{consumible.CodConsumible}}
</mat-option>
</mat-select>
<input matInput type="number" formControlName="consumibles" placeholder="Cantidad">
</div>
<div align="end">
<button mat-button (click)="agregarConsumible(true)"><mat-icon>add</mat-icon></button>
<button mat-button (click)="agregarConsumible(false)"><mat-icon>remove</mat-icon></button>
</div>
TS:
cantConsumibles: number = 0;
agregarConsumible(flag: boolean): void {
(flag) ? this.cantConsumibles++ : this.cantConsumibles--;
}
有什么想法吗?提前致谢
select API 文档说我们可以用 @Output() selectionChange: EventEmitter<C>
https://material.angular.io/components/select/api
所以让我们在 select 上添加该方法以了解 selected 的内容。
<mat-select placeholder="Favorite food" (selectionChange)="onFoodSelection($event)">
<mat-option *ngFor="let food of foods" [value]="food.value">
{{ food.viewValue }}
</mat-option>
</mat-select>
然后我们 console.log 事件值,但也将事件值保存到变量以备后用。
@Component({
selector: 'material-app',
templateUrl: 'app.component.html'
})
export class AppComponent {
output: any;
foods = [
{value: 'product10', viewValue: 'Steak'},
{value: 'product20', viewValue: 'Pizza'},
{value: 'product30', viewValue: 'Tacos'},
{value: 'product40', viewValue: 'Lasagne'},
];
onFoodSelection(event:any) {
this.output = event.value;
console.log(event.value)
}
}
在其他元素([=27=]、输入、复选框等)上遵循相同的原则,获取模板更改事件并在 typescript 代码部分中执行一些操作。
下面是一个小例子:https://stackblitz.com/edit/material-select-change-event-binding-tta13p?file=app%2Fapp.component.ts