In this article, we will learn to allow only numbers in the input field.
Step 1:-
Create an Angular application using this command
ng new demo cd demo
Step 2:-
Create directives using this command
ng generate directive number-only
Add the following code in your number-only directives
import { Directive, HostListener, Input, ElementRef } from '@angular/core' import { NgControl } from '@angular/forms' @Directive({ selector: '[appNumberOnly]', }) export class NumberOnlyDirective { @Input() maxLength!: number @Input() language!: string @Input() isAllowFirstZero = 'false' @Input() isDirectiveDisabled = false constructor(private element: ElementRef, public model: NgControl) {} @HostListener('input', ['$event']) onEvent() { if (this.isDirectiveDisabled) { return } // let regx = this.language == 'ar' ? '[٠-٩^]' : '[^0-9]'; let value: string = this.element.nativeElement.value.replace(/[^0-9]/g, '') let newVal: any if (!value) { newVal = undefined } else if (value.length > this.maxLength) { value = value.slice(0, this.maxLength - value.length) } newVal = value if (newVal && newVal[0] === '0' && this.isAllowFirstZero === 'false') { this.model?.control?.setValue('') } else { this.model?.control?.setValue(newVal) } if ( this.isAllowFirstZero === 'true' && value.length >= this.maxLength && /^0*$/.test(newVal.toString()) ) { this.model?.control?.setErrors({ invalid: true }) } } }
Step 3:-
Add following code to app.component.ts
import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent { userForm: FormGroup | any constructor(private fb: FormBuilder) { this.userForm = this.fb.group({ name: ['', Validators.required], contactNo: ['', [Validators.required, Validators.minLength(10)]], }) } ngOnInit(): void { } }
Step 4:-
Add following code to app.component.html
<form name="artistForm" [formGroup]="userForm"> <label>Name : </label> <input type="text" name="name" formControlName="name"/> <br> <label>Contact No : </label> <input type="text" name="contactNo" formControlName="contactNo" appNumberOnly/> </form>
Step 5:-
npm start
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular