angular - 更改 ngModel 时 maxlength 不起作用
问题描述
<input type="text" [(ngModel)]="name" maxlength="10"/>
@Component({...})
export class MyComponent {
name = "testtesttesttesttest"; // length = 20
}
它在输入字段中显示所有 20 个字符。如何防止这种行为?或者也许如何将“名称”变量限制为 10 的长度?我不想有一个表格(FormValidation)。
https://stackblitz.com/edit/angular-qnxkad?file=src%2Fapp%2Fapp.component.html
解决方案
利用[attr.maxlength]
<input type="text" [attr.maxlength]="10" [(ngModel)]="name" />
编辑
由于您想在显示时限制它,您应该使用切片创建自己的指令,如下所示,
@Directive({
selector: '[appLimitTo]',
})
export class LimitToDirective {
@Input() limit: number;
constructor(private ngControl: NgControl) {}
ngOnInit() {
const ctrl = this.ngControl.control;
ctrl.valueChanges
.pipe(map(v => (v || '').slice(0, this.limit)))
.subscribe(v => ctrl.setValue(v, { emitEvent: false }));
}
}
推荐阅读
- python - 引导表单不显示实例的数据
- java - 用于检查输入字符的布尔方法
- video.js - 如何使用自定义 videojs 按钮添加属性
- r - igraph 中的分类计算错误
- python - 从 tkinter 顶级按钮单击返回
- wordpress - 反应原生 Wordpress API 不获取帖子
- java - 在多线程 Rest 客户端中处理 cookie 过期
- google-apps-script - 自动清除范围
- javascript - SVG 颜色填充无法使用 JavaScript
- java - Firebase,com.google.firebase:firebase-messaging:17.3.0 不工作