#angular #typescript
#angular #typescript
Вопрос:
Я получил внешний js-файл, загруженный в мой проект Angular, и одна из функций — это функция обратного вызова, которую я назначил одной из своих функций fnBarcodeScanned(scan)
.
Все работает правильно, поскольку я получаю предупреждение с правильно отсканированным штрих-кодом, но следующая строка не присваивает штрих-код моей локальной переменной this.scanData
.
export class HomeComponent implements OnInit {
scanData: string;
ngOnInit() {
}
fnScanEnable() {
EB.Barcode.enable({ allDecoders: true }, this.fnBarcodeScanned);
this.scanData = "enabled: press HW trigger to capture.";
}
fnBarcodeScanned(scan) {
alert(scan.data);
this.scanData = "barcode: " scan.data;
}
fnScanDisable() {
EB.Barcode.disable();
this.scanData = "disabled: press 'enable' to scan.";
}
}
Как я могу привязать fnBarcodeScanned(scan)
функцию? Как мне кажется, он потерял привязку к компоненту, когда он был передан в обратный вызов.
Ответ №1:
Вы можете либо использовать bind()
, либо arrow function
Использование bind()
:
fnScanEnable() {
EB.Barcode.enable({ allDecoders: true }, this.fnBarcodeScanned.bind(this));
this.scanData = "enabled: press HW trigger to capture.";
}
Использование arrow function
:
fnBarcodeScanned = (scan) => {
alert(scan.data);
this.scanData = "barcode: " scan.data;
}
Комментарии:
1. Не могли бы вы также попробовать преобразовать
fnScanEnable()
в функцию стрелки?2. по-прежнему никаких изменений
3. Тогда я не знаю, что еще делать. Можете ли вы создать проект в stackblitz.com чтобы я мог помочь вам дальше?
4. Это невозможно, поскольку внешний js-файл работает только на портативном устройстве. Функции работает нормально, когда я не использую угловой, но простой в <script></script>. Но я хочу интегрировать это с приложением angular.
5. Может быть, есть другой способ, которым я мог бы передать данные из этой функции в компонент?