这个问题让我发疯了......
我有这段代码:
if (control.value==null||control.value == "" || control.value == " " || control.value.length != 5) {
// do something
}
我的问题:control.value.length
总是返回'undefined'。
我尝试使用这样的字符串变量,但结果是一样的。
var curVal: string = control.value;
if (curVal==null||curVal== "" || curVal == " " || curVal != 5) {
// do something
}
我哪里错了?
编辑:精度:我的control.value不为null或为空,我使用值59000进行测试
此代码:
console.log(control.value + ' - ' + control.value.length);
记录下来: 59000 - 未定义
编辑2:谢谢你,它已经解决了。问题是我的control.value是数字而不是字符串。
答案 0 :(得分:4)
我认为输入的类型不是字符串而是数字。
@Component({
selector: 'my-app',
template: `
<div>
<input type="number" [ngFormControl]="ctrl">
</div>
`
})
export class AppComponent {
constructor() {
this.ctrl = new Control();
this.ctrl.valueChanges.subscribe((val) => {
console.log(val.length);
});
}
}
在这种情况下,val.length
会返回undefined
,因为数字没有length
属性。
有关详细信息,请参阅此plunkr:https://plnkr.co/edit/5yp5ms9XY5Z3TEE2qYIh?p=preview。
答案 1 :(得分:1)
let a="hello";
let length=a.toString().length;
console.log(length);
输出:5
答案 2 :(得分:0)
有时在Angular上有这个bug,因为版本5.0.0我认为,即使变量不是数字,我也要将它转换为数字以使用'。length'属性,如下所示:
if (control.value==null||control.value == "" || control.value == " " || +(control.value.length) != 5) {
// do something
它可能有效,只需在var.length之前添加符号'+',如:+(var.length)
答案 3 :(得分:0)
之前我遇到过同样的问题,在我的情况下,我的对象设置了一个带小写的字符串&#34; s&#34;因此是一个Angular原语。 你需要在长度之前添加toString():control.value.toString()。length。
答案 4 :(得分:0)
像这样尝试
String(control.value).length != 5
OR
control.value.toString().length != 5