对于对象打字稿,如何获取对象名称?

时间:2019-04-03 14:00:26

标签: angular typescript

我正在尝试创建一个for()来验证模板中状态为 INVALID 的第一个字段,并且我需要此对象的名称。

我尝试类似:

for(var campoObrigatorio in formulario.controls){

  if(formulario.controls[campoObrigatorio].status == "INVALID"){
    var displayCampoObrigatorio = formulario.controls[campoObrigatorio];
    console.log(displayCampoObrigatorio)
    return ;
  }

}

显然我的逻辑是正确的,但是我在这一行中没有得到对象的名称:

var displayCampoObrigatorio = formulario.controls[campoObrigatorio];

在这里捕获状态为 INVALID 的对象的dom 3,我只需要对象的名称。例如:altura,comprimento等...

enter image description here

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用for ... of语句代替for ... in。 因此您的代码应如下所示:

for(var campoObrigatorio of formulario.controls){

  if(campoObrigatorio.status == "INVALID"){
    console.log(campoObrigatorio);
    return 
  }

}
  

for ... of语句创建一个循环遍历可迭代对象,   包括:内置字符串,数组,类似数组的对象(例如,参数   或NodeList),TypedArray,Map,Set和用户定义的可迭代对象。它   调用一个自定义迭代钩子,该钩子要为   对象的每个不同属性的值

有关{.3的{.3}}的更多信息。

答案 1 :(得分:0)

实际上,您拥有了循环中的属性名称,它实际上与var campoObrigatorio相对应,因此这应该可以满足您的要求:

for(var campoObrigatorio in formulario.controls){
  if (formulario.get(campoObrigatorio).status === "INVALID") { // I like to use get
    console.log(campoObrigatorio) // here is the name of the form control!
    return;
  }
}