Member 11072126 Ответов: 1

Не удается прочитать свойство 'correlationdepthunits' undefined - in angular


Всем Привет,

Я новичок в Angular и пытаюсь загрузить выпадающий список со статическими значениями (значениями, определенными в файле .ts).
В то время как я пытаюсь загрузить массив со значениями, я получаю ошибку msg как:

Не удается прочитать свойство 'correlationDepthUnits' из undefined

Я предоставляю весь код ниже:

Что я уже пробовал:

Постоянная.ТС
export class Constant {
public static Units = [
        {unit_name : "ft", unit_value : "ft", unit_description : "Feet"},
        {unit_name : "m", unit_value : "m", unit_description : "Meters"},
        {unit_name : "km", unit_value : "km", unit_description : "Kilometers"},
        {unit_name : "yd", unit_value : "yd", unit_description : "Yards"},
        {unit_name : "mi", unit_value : "mi", unit_description : "Miles"},
    ]
}

единиц.ТС
export class units{
    unit_name : string;
    unit_value : string;
    unit_description : string;
}

основная страница.Компонент.ТС
import { Component, OnInit } from '@angular/core';
import { units } from '../../models/units';
import { Constant } from '../../Constant';

@Component({
  selector: 'app-well-data',
  templateUrl: './well-data.component.html',
  styleUrls: ['./well-data.component.css']
})
export class WellDataComponent implements OnInit {
  Units : units[] = [];

  constructor() {}

  ngOnInit(): void {
    this.getUnits();
  }

  getUnits() {
    debugger;
    /*
    for (var index = 0; index < Constant.Units.length; index++)
    {
      this.Units[index].unit_name = Constant.Units[index].unit_name;
      this.Units[index].unit_value = Constant.Units[index].unit_value;
      this.Units[index].unit_description = Constant.Units[index].unit_description;
    }
    */

    Constant.Units.forEach(function(item){
      this.Units.push(item);
    });
  }

}



Пожалуйста, помоги мне сделать это.
Спасибо.

1 Ответов

Рейтинг:
9

Sandeep Mewara

‘Undefined’ - это свойство глобального объекта. Если вы не присваиваете какое-либо значение переменной типа " undefined’. Код также возвращает неопределенное значение, когда вычисляемая переменная не имеет никакого присвоенного значения.

Пример:
function test(t) {      //defining a function
  if (t === undefined) {       //if t=undefined, call tt
        console.log(t.tt)      //call tt member from t
  }
  return t;    
}var a;    //a is a variable with undefined valueconsole.log(test(a)); //function call


Вам нужно убедиться, что какая-либо переменная выдает неопределенную ошибку, имеет назначенное значение.
function test(t) {      //defining a function
  if (t === undefined) {       //if t=undefined, call tt
        console.log(t)      //call t
  }
  return t;    
}var a=10;    //a is a variable with undefined valueconsole.log(test(a)); //function call


Теперь, в вашем случае, проблема, похоже, заключается в том, что:
Constant.Units.forEach(function(item){
  this.Units.push(item);
});

Вам не хватает стрелки в синтаксисе вызова. попробуйте:
Constant.Units.forEach((item) => {
  this.Units.push(item);
});

Для получения более подробной информации об этом: Определения Функций JavaScript[^]
Цитата:
Стрелочные функции не имеют своего собственного этого. Они не очень хорошо подходят для определения объектных методов.


Member 11072126

Спасибо. Это сработало. Понял, почему требуется функция стрелки.