2016-11-25 133 views
2

我是新的角2,我試過[(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"

請您解釋一下兩個代碼示例和爲什麼它不是在第二個樣本工作之間的差異..

在此先感謝。

回答

2

因爲你不能在那裏做任務。您可以分配進入構造函數或任何其他生命週期方法:

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 = {}; 

} 

此外,如果你看看你transpiled JS文件,你會看到類似這樣的:

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

爲什麼我不能在那裏做任務?如果我不能在那裏做任務,那麼我們如何才能將模型分配給模型?請澄清我..並感謝您的回答 – shivaraj

+2

https://plnkr.co/edit/slL7l8yvOe4aO5dm3Q3X?p=preview您不能在課堂頂級的任意代碼。只有屬性和方法聲明是允許的。代碼必須進入構造函數或方法。 –

+0

@shivaraj您沒有將{}分配給模型,您在那裏創建了一個對象。然後你試圖改變你創建的那個對象的屬性。 – echonax