Angular Функция модели не видна компоненту - PullRequest
0 голосов
/ 07 мая 2020

У меня есть модель пользователя, которую я хочу использовать, и отображать «полное имя» на основе свойств.

export class User {

  id: number;
  firstName: string;
  lastName: string;

  constructor() {
  }

  //getting called later
  getFullName() {
    return this.firstName + " " + this.lastName;
  }

}

Я вызываю, пытаюсь использовать функцию getFullName() в компоненте HTML :

<select>
  <option *ngFor="let user of userList" [ngValue]="user">
    {{user.getFullName()}}
  </option>
</select>

Если я позвоню user.firstName и user.lastName, полное имя будет отображаться, как ожидалось, но с приведенным выше кодом я вместо этого получаю следующую ошибку:

MyComponent.html:3 ERROR TypeError: _v.context.$implicit.getFullName is not a function
    at Object.eval [as updateRenderer] (MyComponent.html:3)
    at Object.debugUpdateRenderer [as updateRenderer] (core.js:45294)
    at checkAndUpdateView (core.js:44277)
    at callViewAction (core.js:44637)
    at execEmbeddedViewsAction (core.js:44594)
    at checkAndUpdateView (core.js:44272)
    at callViewAction (core.js:44637)
    at execComponentViewsAction (core.js:44565)
    at checkAndUpdateView (core.js:44278)
    at callViewAction (core.js:44637)

Здесь это мой поиск списка пользователей:

export class MyComponent implements OnInit {

    userList: User[];

    constructor(private httpClient: HttpClient) {
    }

    ngOnInit() {
        this.httpClient.get<User[]>("http://localhost:8090/user/getAll").subscribe(
            userList => {
                this.userList = userList;
                console.log(userList);
            }
        );
    }

}

Почему он не распознает getFullName() как функцию?

1 Ответ

1 голос
/ 07 мая 2020

ОБНОВЛЕНИЕ

Вам нужно будет каким-то образом создать экземпляр объекта. получить запрос ajax и присвоить его переменной недостаточно. Это не создает экземпляр класса Typescript. если вы создаете экземпляр объекта, вы можете использовать его методы.

В вашем случае простой способ go об этом - это сделать копию объекта Object.assign(new User, user). Я просто не думаю, что стоит делать копию объекта только для отображения имени и фамилии людей.

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