2016-05-18 17 views
2

私が一緒に仕事をNG2ポリマーを取得しようとしています。そのために私の目的は、紙の要素を聞いて、イベントを変換したり、角度をユーザーのやりとりを理解するために行う必要があることを実行するいくつかのディレクティブを作成することです。角度2ポリマーとPaperChechboxSelectedDirective

私はこれを行う場合:

<paper-checkbox [checked]="bar" (change)="bar = $event.target.__data__.checked"> 
    Mark all as complete 
</paper-checkbox> 

を私はNG2(それは私もチェックボックスの値を見つけるために、データに見ているという奇妙な...任意のポインタを扱う双方向バインディングを取得その人は誰ですか?)

だから、すべてのものの仕事が、私は儀式にカットし、私の「バー」式を取得してのonChangeハンドラを経由して、それを設定ディレクティブを持っていると思います。これは可能ですか?

@Directive({selector: 'paper-checkbox'}) 
class PaperChechboxSelectedDirective { 
    @Input() checked: boolean; 
    @Output() checkedChange:EventEmitter<any> = new EventEmitter(); 
    el: any; 
    constructor(elRef: ElementRef) { 
    this.el = elRef.nativeElement; 
    } 
    ngOnInit() { 
    this.el.checked = this.checked; 
    } 
    @HostListener('iron-change', ['$event']) 
    onChange(e) { 
    this.checkedChange.emit(this.el.checked); 
    } 
} 

してからテンプレートに

<paper-checkbox [(checked)]="bar"> 
    Mark all as complete 
</paper-checkbox> 

私を参照してください:

紙チェックボックスディレクティブ

@Directive({selector: 'paper-checkbox'}) 
    class PaperChechboxSelectedDirective { 

    @Output() checkedChange:EventEmitter<any> = new EventEmitter(); 

    constructor(private element: ElementRef) { 
     console.log('PaperChechboxSelectedDirective'); 
    } 

    @HostListener('iron-change', ['$event']) 
    onChange(e) { 

    } 
    } 
+0

https://plnkr.co/edit/nVSdJGAwlXGEcHZXCOqV?p=preview

<paper-checkbox [checked]="bar" (change)="bar = $event.target.checked"> Mark all as complete </paper-checkbox> 

対応plunkerを? –

答えて

3

あなたはこのようにそれを行うために結合双方向を使用することができます実施例はこちらhttps://plnkr.co/edit/FzfNqxMNbVPxuwhf9Dbq?p=preview

またはディレクティブせずに、あなたは単純なビット書くことができます:ここでは、あなたのディレクティブで表現 `bar`の値を取得したい

+0

これは素晴らしいですが、あなたに感謝しますが、ディレクティブは、私はhttps://plnkr.co/edit/hqUaIzsjAxcfOIeR03ak?p=preview角度から「バー」のアップデートで最初のケースを取っていないと はaroung仕事はありますか? – Brett

+0

@Brett間違いを指摘してくれてありがとう。それを私が直した。 https://plnkr.co/edit/kwwa9SBWdPUnAVwLSZTh?p=previewに応じ – yurzui

+0

素晴らしいおかげで、あなたが最初の応答を更新する必要があります:)の答えを更新... – Brett