Клиент Angular CLI HTTP Получить данные, но не обновить объект - PullRequest
0 голосов
/ 20 мая 2019

Я работаю над программой Angular Cli 7, которую я использовал Httpclient для чтения данных из Web Api .net Мой метод на сервере возвращает значение json

getTicket(ticketId: number) {
return this.http.get<TicketModel>(
  SERVERURL/ticketId}
).pipe(map(res => res["result"] as TicketModel));

}

// создать объектмодель для привязки

  selectedTicket: TicketModel = new TicketModel();

// вызов метода для получения билета и установка на объект selectedTicket

        this.accountService.getTicket(ticketId).subscribe(res => this.selectedTicket = res);

служба получает данные, но не обновляет this.selectedTicket, и я чаще всего нажимаю на пользовательский интерфейс или другойкнопки для обновления объекта

data from server

<ul class="list-inline">
   <li>
     <i class="fa fa-calendar-alt kt-font-brand "></i>
     <span style="color:#a7abc3;">تاریخ :
     </span>
     <span> {{selectedTicket.requestTime | agoTime}}
     </span>
   </li>

   <li>
      <i class="fa fa-briefcase kt-font-brand"></i>
      <span style="color: #a7abc3;">واحد : </span>
      <span>{{selectedTicket.departmentName}}</span>
   </li>

1 Ответ

1 голос
/ 20 мая 2019

Сложно узнать наверняка, так как вы не опубликовали код своего компонента.Но если вы используете changeDetectionStrategy OnPush, это может произойти, если вы не внедрили ChangeDetectorRef в ваш компонент и использовали его метод markForCheck, когда шаблон должен быть перерисован.

Итак, сначала добавьтеэто к параметрам конструктора вашего компонента:

 private changeDetectorRef: ChangeDetectorRef

Затем измените ваш код, который устанавливает this.selectedTicket на это:

this.accountService.getTicket(ticketId).subscribe(res => {
  this.selectedTicket = res;
  this.changeDetectorRef.markForCheck()
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...