Неопределенный объект

86
12 октября 2021, 21:30

2 проекта, серверный и клиент, сервер ASP.NET Core, Клиент- Angular 8. Опять Cannot read property 'id' of undefined. Дела обстоят так, принимаю с сервера объект User, все идет нормально, создаю форму по объекту в хтмл, на деле все работает, все распознано и вставляется в свои места, но в консоли получаю Cannot read property 'id' of undefined. Код сервера:

[HttpGet, Route("getuser")]
        public IActionResult Get()
        {
            User user = db.Users.FirstOrDefault(x => x.UserName == User.Identity.Name);
            return Ok(user);
        }

Код компонента:

export class EditUserComponent implements OnInit {  
  constructor(private router: Router, activeRoute: ActivatedRoute, public http: HttpClient,) {}
  user: User;
  invalidLogin: boolean;
  ngOnInit() {   
    let token = localStorage.getItem("jwt");
    this.http.get("http://localhost:5000/api/user/getuser",
      {
        headers: new HttpHeaders({
          "Authorization": "Bearer " + token,
          "Content-Type": "application/json"
        })
      }).subscribe((response:User) => {
        this.user = response;
      }, err => {
        console.log(err)
      });     
  }

Код хтмл:

<form class="form-signin" #loginForm="ngForm" (ngSubmit)="login(loginForm)">
  <div class="container-fluid">
    <h2 class="form-signin-heading">Login</h2>
    <div *ngIf="invalidLogin" class="alert alert-danger">Invalid username or password.</div>
    <br />
    <input type="number" [(ngModel)]="user.id" id="id" name="id" ngModel class="form-control" placeholder="id" required>
    <br />
    <label for="username" class="sr-only">Login</label>
    <input type="text" [(ngModel)]="user.userName" id="username" name="username" ngModel class="form-control" placeholder="User Name" required autofocus>
    <br />
    <label for="lastname" class="sr-only">LastName</label>
    <input type="text" [(ngModel)]="user.lastName" id="lastname" name="lastname" ngModel class="form-control" placeholder="LastName" required>
    <br />
    <label for="password" class="sr-only">Password</label>
    <input type="password" [(ngModel)]="user.password" id="password" name="password" ngModel class="form-control" placeholder="Password" required>
    <br />
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  </div>
</form>

Код самой сущьности в Ангуляре:

export class User {
  constructor(
    public id: number,
    public userName: string,
    public password: string,
    public lastName:string
  ) { }
}

Повторюсь-на деле все идеально, все работает как часы, если не открывать консоль, то ошибку и не заметить, но не могу понять почему она там...

С сервера приходит: {"id":1,"userName":"laki_winners","password":"123","lastName":"lw1234"}

П.С. Знаю что id пока коряво запихал в форму, но это чисто для проверки, в дальнейшем скрою, да и если я убираю id, то ошибка ругается на userName, уберу userName, она ругается на lastName и так далее, в общем user будто неопределен, хотя по факту все работает и я получаю данные из юзера и она вставляются в форму как надо.

Answer 1

Компонент вызывал сначала пустого юзера, а потом перезаписывал в него данные из сервера, проблему решило - <div class="container-fluid" *ngIf="user">. Другими словами задал условие, если юзер не пустой, то все ок.

READ ALSO
Вызов хранимой процедуры

Вызов хранимой процедуры

Есть код на VBТаблица выводит данные

168
Загрузка файла с именем в mysql при помощи php

Загрузка файла с именем в mysql при помощи php

задача в том, чтоб передать в таблицу имя pdf файла, но при попытке отправить текстовое значение в поле namep поле таблицы не заполняется структура...

74
Как организовать базу данных mysql для почасового бронирования

Как организовать базу данных mysql для почасового бронирования

Помогите правильно организовать базу данных mysql для почасового или получасового бронирования помещениеПомещения открыты для бронирования...

159
swiftmailer yii2 ошибка при попытке отправить почту

swiftmailer yii2 ошибка при попытке отправить почту

Что делаю не так? Копирую с mailtrapio конфигурацию для yii

95