尝试使用ngModel将对象绑定到模板时出错?

时间:2016-04-19 09:13:08

标签: typescript angular angular2-template

这应该是一件容易的事情,但我无法弄清楚出了什么问题。

我在班上有这个:

interface Message {
  type:  string;
  email: string;
}

export class MyClass {
  public message: Message;
  public email: string;

  constructor() { }

  // ...
}

如果我绑定电子邮件变量,它就可以正常工作([(ngModel)]='email'),但如果我尝试绑定消息[(ngModel)]='message.email',我收到错误:Cannot read property 'email' of undefined.为什么角度无法达到我的对象变量?

1 个答案:

答案 0 :(得分:1)

您需要实例化message属性才能绑定其中一个属性的输入:

export class MyClass {
  public message: Message = { type: '...', email: '...'};
  public email: string;

  constructor() { }

  // ...
}

修改

在您的情况下,Message是一个接口,因此您无法使用它来实例化此类型的对象。您需要使用文字对象表达式来实例化Message类型的对象。 TypeScript将检查文字对象是否具有所有必需元素。

如果要实例化类型,则需要创建一个类。接口在编译的代码中没有对应关系,类有。

以下是一个示例:

export class Message {
  constructor(public type: string, public email: string) {
  }
}

export class MyClass {
  public message: Message = new Message('type', 'email');
  public email: string;

  constructor() { }

  // ...
}