2017-06-03 5 views
0

指令からAngular2のコンポーネントのInputにどのように登録できますか?指令からAngular2コンポーネントにデータを送信

具体的には、私はすでにthis solutionについて知っていますが、私は親の封筒なしでこれをしたいと思います。

私はAngular2サイトからこのスニペットコードを持って、私はそれがコンポーネントにデータを送信するために動作させることはできません。

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

 
@Directive({ selector: '[dirTest]' }) 
 
export class dirTestDirective { 
 
    @Output() refresh = new EventEmitter<number>(); 
 
    constructor(private element: ElementRef) { 
 
     setInterval(() => { 
 
      this.refresh.emit(Math.random()); 
 
     }, 1000); 
 
    } 
 
} 
 

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

 
@Component({ 
 
    selector: 'simple', 
 
    template: '<div></div>', 
 
}) 
 
export class SimpleComponent implements OnChanges { 
 
    @Input() refresh: number; 
 
    
 
    // This never gets triggered 
 
    ngOnChanges(changes: SimpleChanges) { 
 
     console.log(changes); 
 
    } 
 
}
<!-- Get this together --> 
 
<simple dirTest></simple>
は最終的に私はこの解決策になってしまったではありませんその悪いが、私はまだ inputが良いと思う。

もっと良い解決策があれば教えてください。

http://plnkr.co/edit/FZsIfLfvtf3EjkGGGBlC 
+0

を見ますコンソールログ? – happyZZR1400

+0

いいえ、私はバインドされることはありません。私はコールバックを外部に定義し、 'Simple'コンポーネントに設定して' Directive'からデータを送り、 'Simple'入力に送ることを知っていますが、 'dirTest'から直接入力します。 – PRAISER

答えて

0

私は、親コンテナから「入力」を通じてコン​​ポーネントに値を渡すことについて考えることができます。

<simple dirTest (refresh)="mySub($event)" [refresh]="name"></simple> 

「MYSUB」と「名前」は、親コンテナのメソッドとプロパティのとき:

mySub($event){ 
    this.name = $event; 
} 

あなたはあなたが見るいけない意味「は、それが動作し得ることができない」と言ったときに、このplunk

+0

私はすでに質問を更新し、親を使用していません! – PRAISER

+0

ここにスニペットへのリンクを置くことはできますか? – happyZZR1400

+0

私は質問を理解していない、どのスニペット? これはどういう意味ですか? https://angular.io/docs/ts/latest/guide/attribute-directives.html – PRAISER

関連する問題