-
创建指令
ng g directive shared/ccDirective/nextTab指令的全部源码:
import { Directive, HostListener, ElementRef } from '@angular/core'; @Directive({ selector: '[next-tab]' }) export class NextTabDirective { self:any; nextControl:any; @HostListener("keydown.enter", ["$event"]) onEnter(event: KeyboardEvent) { if (this.nextControl) { if (this.nextControl.focus) { this.nextControl.focus(); this.nextControl.select(); event.preventDefault(); return false; } } } constructor(private control: ElementRef) { this.self=control.nativeElement; } } -
html 模板中调用
<input type="text" next-tab> <input type="text" next-tab> <input type="text" next-tab> -
ts 控制器中初始化
@ViewChildren(NextTabDirective) inputs: QueryList<NextTabDirective>; initTab(){ const controls=this.inputs.toArray(); for (let i=0;i<controls.length-1;i++){ controls[i].nextControl=controls[i+1].self; } }在生命周期钩子
ngAfterViewInit里调用initTab进行初始化即可 -
源码
百度网盘 -> 源码 -> Angular -> 回车切换到下一个控件 自定义指令改进版.zip
- 下面是后续对UI套件支持的测试:
- 2019年1月10日 22:16:49
测试ng-zorro-antd的nz-input兼容 - 2019年1月10日 22:22:53
测试PrimeNG的pInputText兼容 - 2019年1月10日 22:34:51

测试表单中的nz-input兼容 - 2019年1月10日 22:38:24

测试表单中的pInputText兼容 -PrimeNG的input组件

本文介绍了一种在Angular中创建自定义指令的方法,用于实现输入框间的自动切换。通过使用@HostListener装饰器监听键盘事件,并在输入框接收到回车键时聚焦到下一个输入框。同时,该指令兼容多种UI组件,包括ng-zorro-antd和PrimeNG。

249

被折叠的 条评论
为什么被折叠?



