В чем причина этой ошибки? Как мне это решить?

Я хочу поместить эту переменную «obj» типа «Uni.model.ts» внутрь «universitiesListFromDB». который является просто массивом того же типа.

for (let i = 0; i < responseData.length; i++) {
  var matchedFlag: Boolean = false;
  if (this.universitiesListFromDB.length <= 0) {
    for (
      let j = 0;
      j < this.universitiesListFromDB.length && !matchedFlag;
      j++
    ) {
      if (
        this.universitiesListFromDB[j].uniName ==
        responseData[i].UniversityNameOfUser
      ) {
        matchedFlag = true;
      }
    }
    if (matchedFlag == false) {
      var obj: Uni;
      obj.uniName = responseData[i].UniversityNameOfUser;    <<----ERROR HERE
      this.universitiesListFromDB.push(obj);
    }
    //check MatchedFlag, if false then assign
  } else {
    this.universitiesListFromDB[0].uniName =
      responseData[i].UniversityNameOfUser;
  }
}

Ошибка:

core.js:6006 ERROR TypeError: Cannot set property 'uniName' of undefined
at HomepageService.initiallizeRemainings (homepage.service.ts:86)
at SafeSubscriber._next (homepage.service.ts:55)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
at SafeSubscriber.next (Subscriber.js:122)
at Subscriber._next (Subscriber.js:72)
at Subscriber.next (Subscriber.js:49)
at MapSubscriber._next (map.js:35)
at MapSubscriber.next (Subscriber.js:49)
at FilterSubscriber._next (filter.js:33)
at FilterSubscriber.next (Subscriber.js:49)

Ниже приведен массив, который я хочу, чтобы «obj» был вставлен, но у меня возникли проблемы с этим. Может кто-нибудь направить?

universitiesListFromDB: Uni[] = []

Массив имеет тип Uni.model.ts, такой же, как и переменная obj.

export interface Uni {
uniName: String;
}

Пожалуйста, не задавайте вопросы в виде ссылок.

Ethan 18.12.2020 21:17
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
5
1
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы только объявляете obj, но не инициализируете его.

Изменять

var obj: Uni;
obj.uniName = responseData[i].UniversityNameOfUser;

к

let obj: Uni = { uniName: responseData[i].UniversityNameOfUser };

Примечание:
Избегайте использования var. Вместо этого используйте const (неизменяемый) или let (изменяемый).

Другие вопросы по теме