2016-06-28 3 views
0

マイ要件角度Jsの2はjqueryのクエリビルダ内部スクリプトが

がangularjs 2 typescriptです、私は私が持っている

を行っている何

を使用してモーダル内のjqueryのクエリビルダをロードするために必要なファイルの読み込みではありませんクリックボックスのテキストボックスに3つの選択ボックスと1つのテキストボックスを含む動的フォームを作成しました。私はモーダル本体の中にブートストラップモーダルを呼び出しました。私はクエリビルダーをコーディングし、内部Javaスクリプトを作成しました。 template_rule.html内のそのクエリビルダー

私は、テキストボックスのモーダルポップアップが起こっのみ三つのボタンがレンダリングされているモーダル体とレンダリングないでメインクエリビルダビュー内にあるをクリックしたとき

が起こっていただきました。

これは、それが中に、フィールドのセットを追加し続けますことを左上隅のクリックでボタンがあるでしょう、このリンクでデモリンク機能

完全に動作するデモリンク(http://plnkr.co/edit/d38iwjLhJzTjM5t46zD7?p=preview

ですそのフィールドのセットは、そのテキストボックスをクリックするとテキストボックスが表示されます。モーダルがポップアップします。クエリビルダをレンダリングするだけで、ボタンは表示されますが、コアの機能部分はそのモーダルポップアップに表示されません。クエリビルダスクリプトはapp/template_rule.htmlファイルにあり、必要なライブラリはindex.htmlファイルに含まれていますので、この問題を解決するのを手伝ってください

これは完全に動作するコードのためのコードの一部である以下のテンプレートをロード

である場合、角度2で動的にクエリビルダスクリプトファイルをロードすることでこの問題を解決

import {Component} from 'angular2/core'; 
import { 
     FORM_DIRECTIVES, FormBuilder, ControlGroup, ControlArray, Validators, NgForm, Control, 
      AbstractControl 
    }from 'angular2/common'; 

@Component({ 
selector: 'my-app', 
templateUrl:'app/template_rule.html', 
directives: [FORM_DIRECTIVES] 
}) 
export class AppComponent { 
userForm: ControlGroup; 
constructor(private fb: FormBuilder) { 
this.userForm = fb.group({ 
    rules_list: new ControlArray([]) 
    }); 
    this.rules_list(); 
} 

rules_list(){ 
    this.userForm.controls['rules_list'].push(this.fb.group({ 
     select_state: this.fb.control("",Validators.required), 
     rules: this.fb.control("", Validators.required), 
     pass_state: this.fb.control("", Validators.required), 
     fail_state: this.fb.control("", Validators.required) 
    })); 
} 

removeRules(ctrl) { 
    let rulesLists = (<Array>(<ControlGroup>this.userForm.controls['rules_list']).controls); 
    for(var i = 0; i < rulesLists.length; i++) { 
     console.log("each rules", ctrl); 
     if(rulesLists[i] == ctrl) { 
     console.log("rules to remove", rulesLists[i]); 
      rulesLists.splice(i, 1); 
      (<ControlGroup>this.userForm.controls['rules_list']).updateValueAndValidity(); 
     break; 
     } 
    } 
} 

submitRules() { 
    console.log(this.userForm.value) 
    } 
} 

答えて

1

上記のリンクを参照してください。動的に読み込むコード

load_script(){ 
var head=document.getElementByTagName('head')[0]; 
var script=document.createElement('script'); 
script.type='text/javascript'; 
script.src='js file url' 
head.appendChild(script); 
}