2016-12-01 55 views
3

我有一個使用ngModel顯示數據的表單。如果我只是同步加載信息,但是當我嘗試使用異步代碼代碼時,它沒有任何顯示效果。我知道字段名稱是正確的,因爲正如我所說的,它與同步代碼一起工作。我相信這是我錯過的一些愚蠢的事情,但我無法弄清楚。 下面是一些代碼snippits:使用承諾ngModel不顯示數據

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" 

你的情況,這仍然會導致一個錯誤,因爲當userinfonulluserinfo.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控制器。當我應該使用返回一個「IHttpActionResult」對象的「ApiController」時,我使用的是基於「Controller」對象的應用程序,該對象應該用於在代碼內重定向用戶(因爲我使用的是Angular,所以不需要)然後,我可以正確使用「.map(response => response.json())」進行翻譯。