Angular 2 ngModel Not Binding Object属性在类定义中定义

时间:2016-11-25 11:01:50

标签: javascript angular typescript angular2-ngmodel

我是角度2的新手,我尝试了[(ngModel)],如下所示。

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `<input [(ngModel)]="model.name" name="name"> <h1>{{model.name}}</h1>`
})
export class AppComponent  { 
constructor() {
}
model = {name: "some value"};
}

上面的代码在浏览器中初始加载网页时产生如下所示的输出。

model.name gets bind to view on page load

第二个是..

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `<input [(ngModel)]="model.name" name="name"> <h1>{{model.name}}</h1>`
})
export class AppComponent  { 
constructor() {
}
model = {};
model.name = "some value";
}

这个产生以下输出..

If i define model = {} and model.name = "some value it does not appearing in view on page load"

请解释两个代码示例之间的区别以及为什么它不能在第二个示例中工作..

提前致谢。

1 个答案:

答案 0 :(得分:3)

因为你不能在那里做作业。您可以将赋值移动到构造函数或任何其他生命周期方法中:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  template: `<input [(ngModel)]="model.name" name="name"> <h1>{{model.name}}</h1>`
})
export class AppComponent  { 
constructor() {
   this.model.name = "some value";
}
model = {};

}

另外,如果您查看已编译的js文件,您会看到类似的内容:

function AppComponent() {
      this.model = {};
      this.name = "some value";
}