博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Angular] Using directive to create a simple Credit card validator
阅读量:6733 次
发布时间:2019-06-25

本文共 1660 字,大约阅读时间需要 5 分钟。

We will use 'HostListener' and 'HostBinding' to accomplish the task.

 

The HTML:

 

Create directive:

import { Directive, ElementRef, HostListener, HostBinding } from '@angular/core';@Directive({  selector: '[credit-card]'})export class CreditCardDirective {  constructor(private element: ElementRef) {}}

 

Add a HostListener when user type input:

And we want that the max length of string user type is 16 and it should be formatted as '6666 6666 6666 6666'.

@HostListener('input', ['$event'])  onKeyDown(event: KeyboardEvent) {    this.border = "";    const input = event.target as HTMLInputElement;    // the length should be no more than 16    let trimmed = input.value.replace(/\s+/g, '');    if(trimmed.length > 16) {      trimmed  = trimmed.substr(0, 16);    }    // should be 6666 6666 6666 6666    let numbers = [];    for(let i = 0; i < trimmed.length; i +=4) {      numbers.push(trimmed.substr(i, 4));    }    input.value = numbers.join(' ');  }

 

Now we want to use @HostBinding to change style props when what user entered is not a number:

onKeyDown(event: KeyboardEvent) {    this.border = "";    const input = event.target as HTMLInputElement;    // the length should be no more than 16    let trimmed = input.value.replace(/\s+/g, '');    if(trimmed.length > 16) {      trimmed  = trimmed.substr(0, 16);    }    // if we pass in char, show red border    if((/[^\d]/g).test(trimmed)) {      this.border = '1px solid red';    }    // should be 6666 6666 6666 6666    let numbers = [];    for(let i = 0; i < trimmed.length; i +=4) {      numbers.push(trimmed.substr(i, 4));    }    input.value = numbers.join(' ');  }

 

转载地址:http://kofqo.baihongyu.com/

你可能感兴趣的文章
BIM的一小步,工程造价的一大步
查看>>
ABB鼎力支持中国实现2020年风力发电目标
查看>>
18atcskd2w这种密码竟然还是弱口令?
查看>>
大数据时代下 OA助力企业决策更智慧
查看>>
Mac OS X 下搭建 Java 开发环境图解
查看>>
智慧城市是趋势 文化产业不可失
查看>>
程序员要有持续产出
查看>>
农业赶潮互联网+,发展新热点应运而生
查看>>
《中国人工智能学会通讯》——11.25 单目视频下运动物体建模及分析
查看>>
齐聚一堂:共话网络安全人才培养新模式
查看>>
公有云盈利了 阿里Q3财报云服务抢眼!
查看>>
实现VDI灾难恢复的四种方式
查看>>
NetSarang的Xmanager和Xshell多种产品被植入后门 绿盟科技发布分析与防护方案
查看>>
Python开发者面向文档编程的正确姿势
查看>>
第二届中国制造千人会在上海胜利召开 创新驱动转型成共识
查看>>
数据分析就学他们!全球十大数据分析榜样企业
查看>>
一种确保Java程序安全的简单方式
查看>>
从程序员的角度谈创业三年的亲身体会
查看>>
深层学习是AI更像人类的关键
查看>>
天天在做大数据,你的时间都花在哪了
查看>>