2017-07-13 9 views
1

私はangular2アプリケーションを開発中です。typescriptファイルからhtmlを追加し、angular2の機能を実行するには

fieldscriptから日付フィールドを追加しているときに問題が発生しました。フィールドが生成されて完璧に見えましたが、フィールドクリックで実行した機能が動作しませんでした(日付ピッカーがフィールドとイベントアイコンをクリックすると開きます)。あなたはあなたがこれを追跡する必要があることを行うには、動的に をコントロールを作成するために抱き合わせているようです。この

へのあなたのアプローチを変更する必要が

HTML

<div id="specific_dates_container" class="field_area"> 
</div> 

活字体

let count = document.querySelectorAll('.specific-date').length; 
count += 1; 
this.addCouponForm.addControl('specific_date'+count, new FormControl()); 

let html = "<div class='specific-date' id='specific_date"+count+"'><input placeholder='MM/DD/YYYY' ngx-mydatepicker [options]='calendarOptions' #sd"+count+"='ngx-mydatepicker' formControlName = 'specific_date"+count+"' (click)='sd"+count+".toggleCalendar()' readonly><i class='material-icons' (click)='sd"+count+".toggleCalendar()'>event</i></div><br>"; 

$("#specific_dates_container").append(html); 
+1

一般に、Angular、特にjQueryを使用してDOMを操作することは避けてください。条件付きでフィールドを追加または非表示にするために '* ngIf'ディレクティブを試してみてください。 –

答えて

1
+0

正しく動作しているフォームフィールドで問題は発生しませんが、HTMLタグで実装した機能は動作しません。 Ex:クリック機能。 –

+0

はいAngularは独自の仮想ドームを作成し、コンポーネントを初期化しながらイベントをバインドします。 たとえば、Jqueryを使用している場合、directiveプロパティバインディングを持つdomにいくつかの要素を追加しようとすると、Angular virtual domはそのことを知らない このバインディングは実行時ではなくコンパイル時に発生するため – umar

+0

私があなたが言っていることを理解するところから何か情報源を教えてもらえますか? –

関連する問題