本文的目的是介绍Angular4_清空input输入框的详细情况,特别关注angularinput的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Angular4_清
本文的目的是介绍Angular4_清空input输入框的详细情况,特别关注angular input的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Angular4_清空input输入框的机会,同时也不会遗漏关于98.input输入框 只允许输入数字、angular 6+ input输入框 keyup.enter触发其他button事件的细节问题、angular inputNumber指令输入框只能输入数字的实现、Angular.js组件之input mask对input输入进行格式化详解的知识。
本文目录一览:- Angular4_清空input输入框(angular input)
- 98.input输入框 只允许输入数字
- angular 6+ input输入框 keyup.enter触发其他button事件的细节问题
- angular inputNumber指令输入框只能输入数字的实现
- Angular.js组件之input mask对input输入进行格式化详解
Angular4_清空input输入框(angular input)
Method 1.
Using `ngModel`.@Component({ selector: 'my-app',template: ` <div> <input type="text" placeholder="Search..." [(ngModel)]="searchValue"> <button (click)="clearSearch()">Clear</button> </div> `,}) export class App { searchValue:string = ''; clearSearch() { this.searchValue = null; } }
Method 2.
Using null value instead of empty quotation marks.Plunker code:Plunker2 |
Method 1.
Using `ngModel`.
Method 2.
Using null value instead of empty quotation marks.
|
98.input输入框 只允许输入数字
onkeyup="value=value.replace(/[^\d]/g,'''')"
1.效果
angular 6+ input输入框 keyup.enter触发其他button事件的细节问题
最近遇见一个问题;需求是:input可以通过回车实现和点击button一样的功能,看似狠简单的一个问题;但是我却发现了一个问题;先上图;
我发现我回车后居然调用了两次接口;部分html代码:
<div nz-row [nzGutter]="8" nzType="flex" nzAlign="bottom">
<div nz-col [nzXl]="16" [nzXXl]="18">
<input nz-input formControlName="searchValue" placeholder="搜索关键字" (keyup.enter)="getSearchData(true)" />
</div>
<div nz-col [nzXl]="4" [nzXXl]="3">
<button nz-button [nzType]="''primary''" nzBlock (click)="getSearchData(false)">
搜索
</button>
</div>
<div nz-col [nzXl]="2" [nzXXl]="1">
<button nz-button (click)="resetForm()">重置</button>
</div>
<div nz-col [nzXl]="2" [nzXXl]="2">
<button nz-button nzType="link" (click)="toggleCollapse()">
{{ isCollapse ? ''收起'' : ''展开'' }}
<i nz-icon [nzType]="isCollapse ? ''up'' : ''down''"></i>
</button>
</div>
</div>
一开始我以为是因为冒泡的问题;导致父级响应后触发了所有事件,然后我就百度关于angular 冒泡的问题;
申明一下,我现在使用的是angular 8的版本;虽然我标题上是6;这里我就要吐槽一下百度上的一部分大(hua)佬(li)心(hu)得(shao)
搜一个关于angular+的冒泡事件,可能我见识短浅哈,网上都是关于angularJs的冒泡内容,然后搜到的都是各种花里胡哨的;其实我的想法狠简单,我先解决问题,再去弄明白,整那么多花里胡哨的还解决不了问题还那么多粘贴复制的;
最后在一个stackoverflow 上一个外国程序员提到了这个问题,然后一个大佬解决了;虽然可能本身我就走偏了;但是我还是要吐槽一下;别说啥要专研前端技术,毕竟我梦想是想当一名裁缝的厨师
大致意思是这样,问题是讲button默认是触发submit的提交功能,加上绑定的keyup.enter;就出现了调用两次的问题;
解决方法是:为button 添加 type="button"属性;
<button nz-button [nzType]="''primary''" nzBlock type="button" (click)="getSearchData(false)">
搜索
</button>
然后在keyup.enter 发现不会触发了;
angular inputNumber指令输入框只能输入数字的实现
1、建立一个独立模块用于作为公用指令的模块
1)生成模块
ng g m directive
2)进入指令模块目录
cd directive
3)生成一个只能输入数字的指令类
ng g d numberinput
4)指令模块directive.module.ts代码如下
import { NgModule, ModuleWithProviders } from ''@angular/core''; import { CommonModule } from ''@angular/common''; import { NumberinputDirective } from ''./numberinput.directive''; @NgModule({ imports: [ CommonModule ], declarations: [NumberinputDirective], exports:[ // 使引用该模块的类可以使用该指令 NumberinputDirective ] }) export class DirectiveModule { }
5)指令类numberinput.directive.ts代码如下
@Directive({ selector: ''input[numberInput]'' }) export class NumberInputDirective { // tslint:disable-next-line: no-input-rename @Input(''numberInput'') numberType: string; constructor(private el: ElementRef) {} @HostListener(''input'', [''$event.target.value'']) onChange(value: string): void { if (this.numberType.length < 1) { this.updateIntegerValue(value); } else { this.el.nativeElement.value = value.replace(/[^\d.]/g, ''''); } } @HostListener(''blur'', [''$event.target.value'']) onBlur(value: number): void { if (this.numberType.length >= 1) { this.updateFloatValue(value); } } updateIntegerValue(value: string): void { this.el.nativeElement.value = value.replace(/[^\d]/g, ''''); } updateFloatValue(floatValue: number): void { const value = String(floatValue); const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/.test(value); const numBegin = /^\d/.test(value); const numEnd = /\d$/.test(value); if (reg && numBegin && numEnd) { this.el.nativeElement.value = value; } else { this.el.nativeElement.value = 0; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
- Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Angular.js组件之input mask对input输入进行格式化详解
前言
最近因为项目的需要,经常有一些对input输入进行格式化的需求,以前做的时候在js中写指令进行处理,但是这样又要在js或者在java代码中将请求的数据进行还原,很是麻烦,于是在网上看到了jquery的inputmask组件,觉得很好用,在项目中写出指令,用起来很方便。
方法如下:
在项目中引入jquery和jquery-inputmask,然后在项目中写指令,如下:
if (attrs.formatOption) {
var formatOption = scope.$eval(attrs.formatOption);
if (formatOption.parser) {
ngModel.$parsers.push(formatOption.parser);
}
if (formatOption.formatter) {
ngModel.$formatters.push(formatOption.formatter);
}
if (formatOption.isEmpty) {
ngModel.$isEmpty = formatOption.isEmpty;
}
}
var applyModel = function (fun) {
return function () {
(function (args) {
$timeout(function () {
var viewValue = elm.inputmask('unmaskedvalue');
if (viewValue !== ngModel.$viewValue) {
ngModel.$setViewValue(viewValue);
}
if (fun) {
fun.apply(scope,args);
}
});
})(Array.prototype.slice.call(arguments));
};
};
var extendOption = function (option) {
var newOption = angular.extend({},option);
angular.forEach(applyModelEvents,function (key) {
newOption[key] = applyModel(newOption[key]);
});
return newOption;
};
if (attrs.inputMask) {
maskType = scope.$eval(attrs.inputMask);
}
if (maskType) {
if (angular.isObject(maskType)) {
var maskOption = extendOption(maskType);
$timeout(function () {
elm.inputmask(maskOption);
});
} else {
var maskOption = extendOption(scope.$eval(attrs.maskOption) || {});
$timeout(function () {
elm.inputmask(maskType,maskOption);
});
}
}
elm.bind("blur",function(){
$timeout(function () {
if(attrs.isMask){
}else{
ngModel.$setViewValue(elm.inputmask('unmaskedvalue'));
}
});
});
}
}
});
});
如需要将银行卡号按银行卡格式显示:
html:
angular controller中cardOption:
如果日期表示的时候,将string直接转为data类型:
HTML代码:
另外,指令中的一些属性需要注意:
inputMask主要是制定页面展示的样式:如展示银行卡号的例子;
1、format-option主要是指定在格式化的时候解析、格式化和为空的时候,数据的格式;如日期处理,最后进行请求的时候就是传入data类型;
2、isMask主要是指定页面展示的是否是传入后台请求的数据,如卡号解析为XXXX XXXX XXXX XXXX,如果isMask为true则传入后台则为XXXX XXXX XXXX XXXX,否则为XXXXXXXXXXXXXXXX。
3、maskOption:指定页面展示的样式,同时也可以用回调,在完成和验证的时候做一些处理动作。如下:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小编的支持。
今天的关于Angular4_清空input输入框和angular input的分享已经结束,谢谢您的关注,如果想了解更多关于98.input输入框 只允许输入数字、angular 6+ input输入框 keyup.enter触发其他button事件的细节问题、angular inputNumber指令输入框只能输入数字的实现、Angular.js组件之input mask对input输入进行格式化详解的相关知识,请在本站进行查询。
本文标签: