使用嵌套手风琴

时间:2017-10-25 07:02:32

标签: javascript angular

美好的一天! 我正在处理我的项目,我需要在按钮点击时动态添加表单。我有一个嵌套的手风琴,在手风琴里面是ng-select。要明确这是我的代码

 <div class="box box-default" *ngFor="let form of forms; let form_array_index = index"> 
                                <div class="box-header with-border text-center">
                                    <h3 class="box-title">
                                        <div class="row"> 
                                            <div class="col-md-4">
                                                <select2 id="segment" name="segment"
                                                [data]="add_segment"
                                                [width]="293"
                                                [value]="segment_value"
                                                (valueChanged)="changedSegment($event, form_array_index)"
                                                required>
                                            </select2>
                                        </div>
                                    </div>
                                </h3>
                                <div class="box-tools pull-right">               
                                </div>
                            </div>
           <div class="box-body">
                            <div  class="row"> 
                                <div class="col-md-2">
                                    <label for="category">Values:</label>
                                    <select2 id="category" name="category"
                                    [options]="options"
                                    [data]="add_category"
                                    [width]="293"
                                    [value]="category_value"
                                    (valueChanged)="changedCategory($event, form_array_index)"
                                    required>
                                </select2>
                            </div>
                        </div>
                            <div class="box-header with-border text-center" *ngIf="cat_value">         
                                <div class="panel panel-default">
                                    <div class="panel-heading">
                                        <h5 class="panel-title">
                                            <a data-toggle="collapse" data-parent="#accordion1" href="#{{ category_current[form_array_index] }}">{{collection_category[form_array_index].category}}
                                            </a>
                                        </h5>
                                    </div>
                                    <div id="{{ category_current[form_array_index] }}" class="panel-collapse collapse">
                                        <div class="panel-body">
                                            <div class="panel-body">
                                                <button class="btn btn-success btn-xs pull-left" (click)="addQuestions()">Add Question</button>
                                                <div class="row" >
                                                    <select2  *ngIf="query" id="question" name="question"
                                                    [data]="add_question"
                                                    [width]="293"
                                                    [value]="question_value"
                                                    (valueChanged)="changedQuestion($event)"
                                                    required>
                                                </select2>
                                            </div>
                                            <button class="btn btn-success btn-xs pull-left" (click)="addSubCat()">Add Sub Category</button>
                                            <div class="row"  >
                                                <select2 *ngIf="subcat" id="subcategory" name="subcategory"
                                                [options]="options"
                                                [data]="add_subcategory"
                                                [width]="293"
                                                [value]="subcategory_value"
                                                (valueChanged)="changedSubcategory($event, form_array_index)"
                                                required>
                                            </select2>
                                        </div>
                                        <div class="panel-group" id="accordion21" *ngIf="subcat">
                                            <ul class="list-group">
                                                <li class="list-group-item" >
                                                    <div class="panel">
                                                        <a data-toggle="collapse" data-parent="#accordion21" href="#{{ subcategory_current }}" >
                                                            <strong>{{ get_subcategory }} </strong>
                                                        </a>
                                                        <div id="{{subcategory_current}}" class="panel-collapse collapse">
                                                            <div class="panel-body">
                                                                <label for="question">Question:</label>
                                                                <select2 id="question" name="question"
                                                                [data]="add_question"
                                                                [width]="293"
                                                                [value]="question_value"
                                                                (valueChanged)="changedQuestion($event)"
                                                                required>
                                                            </select2> <br>                                                                
                                                        </div>
                                                    </div>
                                                </div>
                                            </li>
                                        </ul>                                        
                                    </div>
                                </div>
                            </div></div>
                        </div>
                        <div class="box-tools pull-right">                
                        </div>
                    </div>
                </div>

这意味着在SEGMENT中它可以有多个CATEGORY和内部类别,它可以有一个问题,或者他们选择SUB CATEGORY,他们必须选择一个问题

这是我的component.ts

 public collection_category = [];
    public collection_subcategory = [];
        addSegment(){
            this._q_service.addSegment().
            subscribe(
                data => {
                    this.add_segment = Array.from(data); 

                    let id = 0;
                    let text = 'Select Segment';

                    this.add_segment.unshift({id,text});
                    // this.segment_value = [];
                    this.segment_current = this.segment_value;
                },
                err => console.error(err)
                );
        }

        changedSegment(data: any, form_array_index: any) {
            this.segment_current = data.value;
            if(this.segment_current.length > 0){
                for (let i = 0; i < this.add_segment.length; ++i) {
                    if (this.add_segment[i].id == this.category_current) {                  
                        this.collection_category[form_array_index].segment = this.add_segment[i].text;
                    }
                }
            }
            console.log('segment', this.collection_category);

        }

        addCategory(){
            this._q_service.addCategory().
            subscribe(
                data => {
                    this.add_category = Array.from(data);
                    this.category_value = [];
                    this.options = {
                        multiple: true
                    }
                    let id = 0;
                    let text = 'Select Category';

                    this.add_category.unshift({id,text});
                    this.category_value = [];
                    // this.category_current.push(this.category_value);
                    // console.log(this.category_current);
                },
                err => console.error(err)
                );
        }

        changedCategory(data: any, form_array_index: any ) {
            this.category_current = data.value;

            if(this.category_current.length > 0){
                let len = this.add_category.length;
                for (let i = 0; i < len; ++i) {
                    if (this.add_category[i].id == this.category_current) {
                        this.get_category = this.add_category[i].text;                  
                        this.collection_category[form_array_index].category = this.add_category[i].text;
                    }
                }
                this.cat_value = true;
            }

            console.log(this.collection_category);

            this.addSubCategory();
            this.addQuestion();
        }

        addSubCategory(){
            this._q_service.addSubCategory().
            subscribe(
                data => {
                    this.add_subcategory = Array.from(data);
                    this.subcategory_value = [];
                    this.options = {
                        multiple: true
                    }
                    let id = 0;
                    let text = 'Select Sub Category';

                    this.add_subcategory.unshift({id,text});
                    this.subcategory_value = [];
                    this.subcategory_current = this.subcategory_value;          
                },
                err => console.error(err)
                );
        }

        changedSubcategory( data: any, form_array_index: any ) {
            this.subcategory_current = data.value;

            if(this.subcategory_current.length > 0){
                let len = this.add_subcategory.length;
                for (let i = 0; i < len; ++i) {
                    if (this.add_subcategory[i].id == this.subcategory_current) {
                        this.get_subcategory = this.add_subcategory[i].text;

                        this.collection_category[form_array_index].subcategory = this.add_subcategory[i].text;
                        // this.collection_subcategory[form_array_index].subcategory_collection = [];
                    }
                }

                this.sub_value = true;
            }

        }
     addQuestion(){
            this._q_service.questionList().
            subscribe(
                data => {
                    this.add_question = Array.from(data);
                    this.question_value = [];
                    let id = 0;
                    let text = 'Select Question';

                    this.add_question.unshift({id,text});
                    this.subcategory_value = ['0'];
                    this.question_current = this.question_value;            
                },
                err => console.error(err)
                );
        }

        changedQuestion(data: any) {
            this.question_current = data.value;

            if(this.question_current != 0){
                let len = this.add_question.length;
                for (let i = 0; i < len; ++i) {
                    if (this.add_question[i].id == this.question_current) {
                        this.get_question = this.add_question[i].text;
                    }
                }

            }
        }

addFormRow(){
        let new_form ={
            id: '',
            segment: '',
            category: '',
            subcategory: '',
            question: ''
        };

        // this.category_current.push(0);
        let segment_categories = {
            segment: '',
            category: '',
            subcategory: '',
            question: ''
        };
        //this.category_current[form_array_index].category
        this.collection_category.push(segment_categories);
        this.forms.push(new_form);
    }

*每次用户点击“添加表单”按钮时,它都会动态添加表单* This is the sample User Interface of what I'm doing

但是每次我添加表格时它都会给我一个错误第一个手风琴在第二个表格上不起作用但第一个表格运作良好

0 个答案:

没有答案