Hello Friends, In this article, we will learn how to convert the amount into words in angular using a custom Pipe.
First, we need to create a pipe namely “amount-to-word” to convert the amount into words.
ng generate pipe amount-to-word
Now put the below code in the “amount-to-word” pipe
export class AmountToWordPipe implements PipeTransform { transform(value: any, args?: any): any { if (value) { value = parseFloat(value).toFixed(2); let amounth = value.toString().split("."); let price: any = amounth[0]; let pointer: any = amounth.length > 0 ? amounth[1] : null; var singleDigit = ["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"], doubleDigit = ["Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"], tensPlace = ["", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"], handle_tens = function (digit: any, prevdigit: any) { return 0 == digit ? "" : " " + (1 == digit ? doubleDigit[prevdigit] : tensPlace[digit]) }, handle_utlc = function (digit: any, nextdigit: any, denom: any) { return (0 != digit && 1 != nextdigit ? " " + singleDigit[digit] : "") + (0 != nextdigit || digit > 0 ? " " + denom : "") }; var rupees = "", digitIndex = 0, digit = 0, nextDigit = 0, words = [], paisaWords = [], paisa = ""; if (price += "", isNaN(parseFloat(price))) rupees = ""; else if (parseFloat(price) > 0 && price.length <= 10) { for (digitIndex = price.length - 1; digitIndex >= 0; digitIndex--) switch (digit = price[digitIndex] - 0, nextDigit = digitIndex > 0 ? price[digitIndex - 1] - 0 : 0, price.length - digitIndex - 1) { case 0: words.push(handle_utlc(digit, nextDigit, "")); break; case 1: words.push(handle_tens(digit, price[digitIndex + 1])); break; case 2: words.push(0 != digit ? " " + singleDigit[digit] + " Hundred" + (0 != price[digitIndex + 1] && 0 != price[digitIndex + 2] ? " and" : "") : ""); break; case 3: words.push(handle_utlc(digit, nextDigit, "Thousand")); break; case 4: words.push(handle_tens(digit, price[digitIndex + 1])); break; case 5: words.push(handle_utlc(digit, nextDigit, "Lakh")); break; case 6: words.push(handle_tens(digit, price[digitIndex + 1])); break; case 7: words.push(handle_utlc(digit, nextDigit, "Crore")); break; case 8: words.push(handle_tens(digit, price[digitIndex + 1])); break; case 9: words.push(0 != digit ? " " + singleDigit[digit] + " Hundred" + (0 != price[digitIndex + 1] || 0 != price[digitIndex + 2] ? " and" : " Crore") : "") } rupees = words.reverse().join("") } else rupees = ""; if (rupees) rupees = `${rupees} Rupees` if (pointer != "00") { digitIndex = 0; digit = 0; nextDigit = 0; for (digitIndex = pointer.length - 1; digitIndex >= 0; digitIndex--) switch (digit = pointer[digitIndex] - 0, nextDigit = digitIndex > 0 ? pointer[digitIndex - 1] - 0 : 0, pointer.length - digitIndex - 1) { case 0: paisaWords.push(handle_utlc(digit, nextDigit, "")); break; case 1: paisaWords.push(handle_tens(digit, pointer[digitIndex + 1])); break; } paisa = paisaWords.reverse().join(""); if (rupees) rupees = `${rupees} and ${paisa} Paisa` else rupees = `${paisa} Paisa` } return rupees } } }
So by this pipe, we will be able to Convert Numbers into Words easily.
Now we are use pipe in our components like below
<input type="text" [(ngModel)]="amount"> <span>{{amount | amountToWord}}</span>
Now here we are converting amount into words
I hope this article helps you and you will like it. Thanks for reading.
Thanks Sir