angular - Typescript .length returnerar undefined


Det här problemet gör mig galen ...

Jag har denna kod:

if (control.value==null||control.value == "" || control.value == " " || control.value.length != 5) {
     // do something
}

Mitt problem: control.value.length returnerar alltid 'undefined'.

Jag försöker använda en strängvariabel på det här sättet men resultatet är detsamma.

var curVal: string = control.value;
if (curVal==null||curVal== "" || curVal == " " || curVal != 5) {
     // do something
}

Var har jag fel?

Redigera: Precision: mitt control.value är inte null eller tomt, jag testar med värdet 59000

Den här koden :

console.log(control.value + ' - ' + control.value.length);

logga detta: 59000 - undefined

REDIGERA 2 : Tack, det är löst. Problemet var att mitt control.value var ett nummer och inte en sträng.

Svar #1

Jag tror att typen på din inmatning inte är en sträng utan ett tal.

@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);
    });
  }
}

I det här fallet returnerar val.length undefined eftersom nummer inte har en length-attribut.

Se denna plunkr för mer information: https://plnkr.co/edit/5yp5ms9XY5Z3TEE2qYIh?p=preview.

Svar #2

Försök som dessa

String(control.value).length != 5

ELLER

control.value.toString().length != 5

Relaterade artiklar