ngModel中的异步数据

时间:2018-05-17 10:52:50

标签: angular angular-forms

我的表单包含从服务器绑定的异步数据:

<form>
 <input [(ngModel)]="currentService.user.username">
 <input [(ngModel)]="currentService.user.email">
</form>

只有当我将*ngIf="currentService.user"添加到表单时才能正常工作,但在从服务器获取数据之前,我希望渲染输入没有值。但我得到错误:

  

'无法读取未定义'

的属性'用户名'

我该如何解决这个问题?可能,我需要类似async管道到ngModel的东西,但这显然不起作用。

3 个答案:

答案 0 :(得分:5)

你可以尝试一下

 <input [(ngModel)]="currentService.user && currentService.user.username">
 <input [(ngModel)]="currentService.user && currentService.user.email">

Working Example

答案 1 :(得分:1)

您需要在服务中初始化用户。我认为您的代码如下所示:

private user: User;

然后你进行HTTP调用或类似的事情来设置用户。 但是在检索用户时,用户是未定义的,直到异步调用结束。

因此,如果您改变这样的行,它应该有效:

private user: User = new User;

答案 2 :(得分:1)

您必须将currentService定义为下面的对象,然后才能从服务器获取数据之前使用它。

currentService = {
    user : {
        username: '',
        email: ''
    }
}

然后

<form>
 <input [(ngModel)]="currentService.user.username">
 <input [(ngModel)]="currentService.user.email">
</form>