2016-03-31 3 views
0

を働いていない:私はこのように、このコンポーネントを消費しています角度2 Modelbinding(文字列)を単純ために、私は文字列フィールドの入力との単純なコンポーネントまし

import {Component, Input} from 'angular2/core'; 

@Component({ 
    selector: 'mundo-input', 
    template: ` 
     <input class="form-control" [(ngModel)]="zeit" /> 
    ` 
}) 
export class MundoInputComponent { 
    @Input() zeit: string;  
} 

を:

<mundo-input [(zeit)]="myzeit"></mundo-input> 

外部コンポーネントからのmyzeit-propertyが正しく注入されます。値を手動で変更して外部コンポーネントのsaveを押すと、myzeit-propertyは古い値を持ちます。

私はzeitのタイプをstringからHeroクラス(NG2チュートリアルのように)に変更し、入力のバインディングをzeit.nameに変更しました。双方向のデータバインディングが機能しました。

文字列型のプロパティに外部コンポーネントからバインドすることはできますか?複雑な型(クラス)で単なる可能性はありますか?

+0

http://stackoverflow.com/questions/36320605/angular-2-component-modelbinding-is-not-working/36338106#36338106との違いは何ですか? –

+0

最初にリンクした質問を編集しましたが、別の質問 – Weissvonnix

答えて

0

あなたは、双方向バインディングを活用できるようにするには、あなたのコンポーネントに出力に含まを追加する必要があります。

@Component({ 
    selector: 'mundo-input', 
    template: ` 
    <input class="form-control" [ngModel]="zeit" 
       (ngModelChange)="onChange($event)" /> 
    ` 
}) 
export class MundoInputComponent { 
    @Input() zeit: string;  
    @Output() zeitChange:EventEmitter<string> = new EventEmitter(); 

    onChange(val) { 
    this.zeitChange.emit(val); 
    } 
} 

慣例により出力がzeitChangeショートカット[(zeit)]="myzeit"を使用できるように持っている必要があります。

<mundo-input [(zeit)]="myzeit"></mundo-input> 

zeitパラメータには一方向バインディングのみを使用します。

このplunkr:https://plnkr.co/edit/snaM4y?p=previewを参照してください。

+0

が意味を持ちますが、ロールバックされましたが、まだ機能していません。単純な型の出力が必要なのはなぜですか?クラスは出力なしで動作していますか? – Weissvonnix

+0

プリミティブ型では、サブコンポーネント内の更新について参照することはできません。 –

+0

私は答えに作業用のplunkrを追加しました。 –

関連する問題