2017-03-24 9 views
0

テンプレートビューで配列の値にバインドしようとしています。 AngularJSでは次のようにこれを達成しました角2配列値へのバインド

<div dx-text-box="{bindingOptions: { 
     value: 'mainTableData[0].{{childControl.FieldName}}' 
}}"></div> 

これはうまくいきましたが、Angular2で失敗しました。以下は私が試したものです。

<dx-text-box 
     [(value)]="mainTableData[0].{{childControl.FieldName}}"> 
</dx-text-box> 

これを行う正しい方法は何でしょうか?私は正しい配列値を返す関数に変更しようとしましたが、これも失敗します。 (仮定:mainTableData[0].childControl.FieldNameはあなたのcomponent.ts上)

答えて

0

それはおそらくこのようなものになります。

<div [attr.dx-text-box] = "{bindingOptions: { 
    value: 'mainTableData[0].{{childControl.FieldName}}'}}"> 
</div> 
+0

私は、これが次のエラーで失敗し、また、これを試してみました。 self.parentView.parentView.parentView.parentView.context.mainTableDataは定義されていません – user3208483

+0

'dx-text-box'はどこにありますか?あなたはcomponent.tsファイルを投稿できますか? – YounesM

+0

これはテンプレートで呼び出されますが、これに関連するコードはcomponent.tsにありません。そのテンプレートをロードする空のクラスで、mainTableDataはサービス上にあります。 – user3208483

0

これを試してみてください:

<dx-text-box 
     [value]="mainTableData[0].childControl.FieldName"> 
</dx-text-box> 

あなたはまた、カスタムを追加することができた場合は、実行して属性

<dx-text-box 
     [(value)]="mainTableData[0].childControl.FieldName"> 
</dx-text-box> 
+0

このdidnt仕事、以下のコメントを参照してください。 – user3208483

+0

申し訳ありませんが、これもやってみましたが、FieldNameが相当する値ではなく、 'childControl.Fieldname'の値を探すようです。私は下に貼り付け同じエラーで失敗します。 – user3208483

+0

それは何もしません。 [値]はコンポーネントの値を入力にバインドします。 (value)はコンポーネントへの入力をバインドします。[(value)]は双方向データバインディングであり、divには入力データがないため、[(value)]は目的を果たせません。 – YounesM

0

潜在的にあなたの価値を得るために関数を使用することができますか?テンプレート?あなたのdx-text-boxコンポーネント内

public getMyValue(name) { 
    return this.mainTableData[0][name]; 
} 

public updateValue(event) { 
    console.log("new value", event.target.value); 
} 

: - - :あなたの親コンポーネント内部

<dx-text-box 
     [value]="getMyValue(childControl.FieldName)" (valueChanged)="updateValue($event)> 
</dx-text-box> 

@Ouput public valueChanged: EventEmitter<any> = new EventEmitter(); 

public functionThatsFiredWhenChangesHappen(value) { 
    this.valueChanged.emit(value); 
} 
+0

Unforunatly not、valueは文字列を取ることしかできません。 – user3208483

+0

この関数は文字列を返します - あなたの 'mainTableData'配列を見ることなく) –

+0

[(value)] =" test() "のような関数に設定すると、次のエラーが出ます。パーサーエラー:Unexpected [test()= $ event]の列13のトークン '=' – user3208483

関連する問題