2016-12-01 2 views
3

У меня есть форма, которая использует ngModel для отображения данных. Он отлично работает, если я просто загружаю информацию синхронно, однако, когда я пытаюсь использовать асинхронный код кода, ничего не появляется. Я знаю, что имена полей верны, поскольку, как я уже сказал, он работает с синхронным кодом. Я уверен, что это нечто глупое, которого я пропустил, но я не могу понять, что. Вот некоторые код snippits:ngМодель, не отображающий данные при использовании обещаний

userinformation.service.ts

getuserinformation(): Promise<UserInformation> { 
      return Promise.resolve(MOCKUSERINFORMATION[0]); 
     } 

userinformation.component.ts

getUserInformation(): void { 
     this.userinformationservice.getuserinformation().then(userdata => this.userinfo = userdata); 
    } 

userinformation.component.html

<input type="text" autofocus="autofocus" name="FirstName" id="firstname" required="required" placeholder="First Name" class="required" ([ngModel])="userinfo.FirstName" /> 

ответ

0

На первый ([...]) является недействительным. Он называется банан в коробке по причине ;-)

Должны быть

[(ngModel)]="userinfo.FirstName" 

В вашем случае это будет по-прежнему вызывает ошибку, потому что, когда userinfo является null, userinfo.FirstName не определен.

Это должно работать

[ngModel]="userinfo?.FirstName" (ngModelChange)="userinfo && userinfo.FirstName = $event" 

или в качестве альтернативы

*ngIf="userinfo" [(ngModel)]="userinfo.FirstName" 

Таким образом <input> хорошо не будет отображаться, пока userinfo еще не установлен.

+0

Я должен делать что-то еще неправильно, так как ни один из них не работал. Я не получаю информацию, которая когда-либо появлялась. Он появляется, если я помещаю одиночную запись в список, а затем использую цикл * ngFor. –

+0

Не могли бы вы изменить свой вопрос и опубликовать код, демонстрирующий, что вы пробовали. Трудно сказать, что вы, возможно, сделали неправильно. –

+1

Я смог полностью переписать код, чтобы заставить его работать. Оказывается, я использовал неправильный контроллер C# MVC, и как только я использовал правильный, все работало нормально. –

1

Оказывается, я использовал неправильный тип C# MVC Controller. Я использовал один на основе объекта «Контроллер», который должен использоваться для перенаправления пользователя внутри кода (не требуется, поскольку я использую Angular), когда я должен был использовать «ApiController», который возвращает объект «IHttpActionResult», который Затем я могу перевести, используя «.map (response => response.json())» правильно.

Смежные вопросы