2016-09-17 8 views
0

プロジェクトをベータ版からRC6に移動します。私はこのようなコンテンツの編集可能なディレクティブに私のコントローラ内のプロパティを結ぶしようとしている:テンプレート内の非同期プロパティへのバインド

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

personそれが非同期であるので、しかし、残りの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イベントを処理しているため、「banana-box」の形式[()]は不要で、問題の原因となる可能性があります。

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

ありがとう@nickspoon - 私は実際に双方向バインディングが必要でしたが、答えに感謝します。 –

関連する問題