Я думаю, вы должны попробовать асинхронное ожидание, заменить:
this.barcodeScanner.scan(
{
showFlipCameraButton : true, // iOS and Android
showTorchButton : true, // iOS and Android
prompt : 'Scan a Kardbox QR' // Android
}
).then((barcodeData) => {
this.cardService.getCard(barcodeData.text)
.then((data) => {
// I want to add this to the database first
this.cardService.addCardToWallet(this.currentUserId, barcodeData.text, data);
// After adding values to database, navigate to other page
this.router.navigate(['/home/wallet']);
});
});
с:
const barcodeData = await this.barcodeScanner.scan(
{
showFlipCameraButton : true, // iOS and Android
showTorchButton : true, // iOS and Android
prompt : 'Scan a Kardbox QR' // Android
},
);
const data = await this.cardService.getCard(barcodeData.text);
this.cardService.addCardToWallet(this.currentUserId, barcodeData.text, data);
this.router.navigate(['/home/wallet']);
И не забудьте добавить асинхронный метод перед методом scancode ().