2016-09-17 16 views
0

我正在將項目從測試版移到RC6。我想在我的控制器,以配合一個屬性添加到內容編輯指令是這樣的:綁定到模板中的異步屬性

<h4 contenteditable="true" [(contenteditableModel)] = "person.name" placeholder="First Last" (contenteditableModelChange)="updated($event)"></h4> 

person但是從REST API來所以它是異步的。這是造成角拋出異常

null is not an object (evaluating 'self.context.person.name') 

這是有道理的,我使用?.運營商嘗試,但後來我得到這個錯誤(儘管這在前面的代碼是工作。):

The '?.' operator cannot be used in the assignment 

我初始化person對象是這樣的:

ngOnInit(){ 
    this.route.params.forEach(params => { 
     this.nodeID = params['id']; 
     this.personService.getPerson(this.nodeID) 
     .subscribe(person => {this.person = person}); 

    }); 

什麼是做到這一點的正確方法?

回答

1

這也許是很長的路要走:

<h4 *ngIf="person" contenteditable="true" [(contenteditableModel)] = "person.name" placeholder="First Last" (contenteditableModelChange)="updated($event)"> 
</h4> 

,如果它是不確定的,不要創建該元素。

0

由於您使用()來處理onchange事件,因此可能是「香蕉箱」格式[()]是不必要的,並且會導致問題。儘量只用方括號:

<h4 contenteditable="true" [contenteditableModel]="person?.name" ...> 
+1

謝謝@nickspoon - 事實證明,我真的需要雙向綁定,但我很欣賞答案。 –

相關問題