2017-02-02 28 views
6

私はデータ駆動のAngularアプリケーションを持っています。私はトグル状態で渡すトグルコンポーネントを持っています。私の問題は、オブジェクトとしてトグルブール値を渡さない限り、双方向データバインディングが動作しないように見えることです。 をEventEmitterを使用せずに、またはオブジェクトをとして渡すことなく、これを動作させる方法がありますか?これは再利用可能なコンポーネントであり、アプリケーションは非常にデータ駆動型であるため、オプションではなくオブジェクトとして値を渡します。私のコードは、あなたの仕事にAngular2コンポーネント@Input双方向バインディング

<input type="checkbox" [(ngModel)]="toggled" [id]="toggleId" name="check"/> 

toggle.component.ts [(toggled)]="..."については

import { Component, Input, EventEmitter, Output } from '@angular/core'; 

@Component({ 
    moduleId: module.id, 
    selector: 'toggle-switch', 
    templateUrl: 'toggle-switch.component.html', 
    styleUrls: ['toggle-switch.component.css'] 
}) 

export class ToggleSwitchComponent { 

    @Input() toggleId: string; 
    @Input() toggled: boolean; 

} 

parent.component.html

<toggle-switch toggleId="toggle-1" [(toggled)]="nongenericObject.toggled"></toggle-switch> 
+0

http://stackoverflow.com/documentation/angular2/8943/angular2-input-output#t=201702021650455443161 –

答えて

15

toggle.html ....

です必要性

@Input() toggled: boolean; 
    @Output() toggledChange: EventEmitter<boolean> = new EventEmitter<boolean>(); 

    changeValue() { 
    this.toggled = !toggled; 
    this.toggledChange.emit(this.toggled); 
    } 

も参照してくださいTwo-way binding

+0

彼が持つEventEmitterを使用したり、変数を渡さず」というひどく失望することになるだろうオブジェクトとして」は満たされない。それは、基本的な構文を読まなかったようです。ああ、ちょっと、構文ガイドへのリンクです。 – silentsod

+0

彼は 'EventEmitter'をインポートしました。あなたが期待するほど悪くないかもしれません;-) –

+0

これは実際に私のために働いた。もともと、親コンポーネントの関数にリンクされたイベントエミッタを使用するように設定していました。それは非常に再利用可能ではありませんでしたので、私はなぜこれを行う方法があるかどうかを確認するために質問をしました。この回答は何らかの理由で親トグルされた変数を変更する –

関連する問題