2017-01-23 5 views
1

子コンポーネントのEvent Emitterに問題があります。Angular2 - 親コンポーネントへのタイムアウト機能によるEventEmitterの変数

EventEmitterで変数を親コンポーネントに渡したいのですが、タイムアウト機能を使用します。

CHILD:今、それはこのようになります親のすべてで

export class AlertSuccess implements OnChanges { 

    @Input() success: SuccessCRM; 
    @Output() emitCollapse:EventEmitter<any> = new EventEmitter(); 

    private info_ico: string = require('../../public/images/iconInfoTip.png'); 
    public state: boolean = false; 

    constructor() {} 

    collapseAlert() { 
     let alert = document.getElementById('success'); 
     setTimeout(function() { 
      console.log("BEFORE EMITTED STATE!!!!!: ", this.state); 
      console.log(this.emitCollapse); 
      this.emitCollapse.emit(this.state); 
     }, 500); 
    } 

    ngOnChanges(changes: SimpleChanges):void { 
     console.log("CHANGES: ", this.success); 
     this.collapseAlert(); 
    } 
} 

は正常であり、私は、テンプレートを経由して渡されたメソッドを持っています。

エミッタはタイムアウト機能なしで動作しています。私はそれをタイムアウトに実装するのを手伝ってください!

よろしくお願いします。 ボスパー!

答えて

1

Arrow functionを使用して、thisを正しく指定してください。

+2

@Ulandの改善点やコメントとして、あなたのngOnDestroy内のタイムアウトをクリーンアップしてください。 –

+0

@camaron私はタイムアウトのクリアが重要ではないと思うので、 'collapseAlert'関数が呼び出され、' setTimeout'は一度だけ呼び出され、その後呼び出されることはありません。それが 'setInterval'なら、OPは' ngOnDestroy'ライフサイクルイベントでそれをクリアする必要があります。 –

関連する問題