可以使用 Angular 的 ViewChild
和 Renderer2
来实现这个功能。
首先,在组件类中添加以下代码,来引用输入框的所有元素,并创建一个数组存储这些引用。
import { Component, QueryList, ElementRef, Renderer2, ViewChildren, AfterViewInit } from '@angular/core';
@Component({
selector: 'app-example',
template: `
`
})
export class ExampleComponent implements AfterViewInit {
@ViewChildren('input1', 'input2', 'input3') inputs: QueryList;
inputRefs: ElementRef[];
constructor(private renderer: Renderer2) { }
ngAfterViewInit() {
this.inputRefs = this.inputs.toArray();
}
}
然后,添加 onInputChange
方法来更新前面的输入框,并聚焦到下一个输入框。
import { Component, QueryList, ElementRef, Renderer2, ViewChildren, AfterViewInit } from '@angular/core';
@Component({
selector: 'app-example',
template: `
`
})
export class ExampleComponent implements AfterViewInit {
@ViewChildren('input1', 'input2', 'input3') inputs: QueryList;
inputRefs: ElementRef[];
constructor(private renderer: Renderer2) { }
ngAfterViewInit() {
this.inputRefs = this.inputs.toArray();
}
onInputChange(value: string, index: number) {
// 更新前面的输入框
if (index > 0 && value === '') {
this.renderer.setProperty(this.inputRefs[index - 1].nativeElement, 'value', '');
} else {
this.renderer.setProperty(this.inputRefs[index].nativeElement, 'value', value);
}
// 聚焦到下一个输入框
if (index < this.inputRefs.length - 1) {
this.inputRefs[index + 1].nativeElement.focus();
}
}
}
上一篇:Angular数组数据绑定
下一篇:Angular数组未清空购物车