Angular не может привести результаты к объекту - это IActionResult? - PullRequest
0 голосов
/ 28 апреля 2020

Скопировано так же, как ответили вчера: Попытка получить указанный c объект 'Пользователь', возвращенный из бэкэнда.
Angular:

    this.authService.getUserByName(selectedName)
.subscribe( (response: User) => 
                 {  const selectedUser = response;
                    const firstname = selectedUser.FirstName;
                    this.f.FirstName.setValue(firstname); },
            (error) => 
                 { console.log(error); }
          );

authService:

  getUserByName(name: string): Observable<any> {
    const url = this.cache.StorageGet('baseUrl') + 'auth/user/' + name;
    return this.http.get(url);
  }

бэкэнд .netCore

[HttpGet("user/{userName}")]
public async Task<IActionResult> GetUserbyName(string userName)
{
    User userFromRepo = await _repo.GetUserbyName(userName.ToLower());

    if (userFromRepo == null)
        return BadRequest();

    return Ok(userFromRepo);
}

Выше Ok (userFromRepo): enter image description here

Обратите внимание на все имена полей с заглавной буквы (такие же, как в базе данных а также в «Пользователь», как определено в интерфейсе и бэкэнде). Класс пользователя Angular:

export class User {
    Id: string;
    FirstName: string;
    LastName: string;
    Phone1: string;
    Phone2: string;
    KnownAs: string;
    EmailAddress: string;
    Username: string;
    PasswordHash: any;
    PasswordSalt: any;
    Question: string;
    Answer: string;
    ProjectAdmin: number;
    SystemAdmin: number;
    }

По возвращении во внешний интерфейс (основная функция, которая вызвала службу): enter image description here

Поля, показанные в снимке отладчика все первые буквы в нижнем регистре. Мало того, что selectedUser.FirstName отображается как «undefined», но selectedUser.firstName выдает ошибку компиляции (конечно).
Таким образом: ответ не передается пользователю?

Что я отсутствует (кроме мозгов, опыта, ...)?

Заранее спасибо.

Йог

1 Ответ

0 голосов
/ 28 апреля 2020

Измените свойства в вашем классе User на camelCase. Например,

export class User {
    id: string;
    firstName: string;
    // and so on
}

Как показывает ваш второй снимок экрана, API возвращает json в camelCase. Если вы не можете изменить регистр и хотите продолжать использовать PascalCase, вам следует изменить свой бэкэнд, чтобы он возвращал PascalCase. В зависимости от вашего. Net Базовая версия, возможно, вам поможет этот ответ: { ссылка }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...