Опираясь на комментарий @Suraj Rao, вам нужно будет управлять отсканированным значением штрих-кода для каждого элемента. Это предложение о том, как вы можете это сделать:
Ваша структура данных для this.main2
должна будет включать 2 новых поля:
id
: уникальный идентификатор для каждого элемента
scannedBarCode
: значение штрих-кода для каждого элемента
В вашем .html при сканировании или очистке штрих-кода вам нужно будет передать item.id
в качестве параметра и использовать item.scannedBarCode
в качестве входного значения
На вашем .ts, при сканировании или очистке штрих-кода, вам нужно будет выполнить итерацию и получить элемент на основе заданного id
this.main2:
this.main2 =[
{ id: "1", label: "Scan barcode one", datatype: "barcode", lookupname: "null", order: "11", scannedBarCode: null, validations: Array(1) },
{ id: "2", label: "Scan barcode two", datatype: "barcode", lookupname: "null", order: "10", scannedBarCode: null, validations: Array(1) },
];
.html
<ion-item *ngIf='item.datatype == "barcode"'>
<ion-label floating>
<b>{{item.label}}</b>
</ion-label>
<button ion-button small item-right color="primary" (click)="scanBarCode(item.id)">Scan Barcode</button>
<button ion-button small item-right color="danger" (click)="clearbar(item.id)">Clear</button>
<ion-input type="text" value={{item.scannedBarCode}}></ion-input>
</ion-item>
.ts
scanBarCode(id) {
this.barcodeScanner.scan().then(barcodeData => {
for (var i = 0; i < this.main2.length; i++) {
if (this.main2[i].id == id) {
this.main2[i].scannedBarCode = barcodeData.text;
break;
}
}
}, (err) => {
console.log('Error: ', err);
});
}
clearbar(id) {
for (var i = 0; i < this.main2.length; i++) {
if (this.main2[i].id == id) {
this.main2[i].scannedBarCode = null;
break;
}
}
}