2017-03-04 4 views
0

I があると、カスタムコンポーネントにjQuery-Knobが使用されます。たくさんの検索と試行/ミスの試行の後、私のノブをどのように初期化できたかの唯一の方法は、の中にjQuery関数を0秒でラップしていたことです。答えはthisです。コンポーネントがAngular2/Ionic2でロードされた後にjQuery関数を実行するための正しい方法がありますか?

constructor() { 
    console.log('Hello SsdKnob Component'); 

    setTimeout(() => { 
     $(".dial").knob(); 
    }, 0) 
} 

しかし、ハッキーとおそらくinestableのような感じですか? (何らかの競争条件のために問題が発生するかどうかはわかりません)。

これを行うには、より良い/推奨の方法がありますか?

私は成功せずに試してみました:

ionViewLoaded() { 
    $(".dial").knob(); 

} 

AfterViewInit() { 
    $(".dial").knob(); 
} 

答えて

6

AfterViewInit() {

ngAfterViewInit() { 

代わりにあなたも

ngAfterContentInit() { 
を使用することができますする必要があります

ビューの投影コンテンツの準備が整いました。

jQuery-Knobが非同期初期化を行う場合、これでは不十分な場合があります。次に、コンポーネントが自身を初期化したときにイベントを発生させるかどうかを確認する必要があります。 setTimeout()が最後の手段である必要があります。

+1

私は...ライフイベントのドキュメンテーションタイトルのタイトルを使用しています。ありがとうございました! – distante

関連する問題