2017-04-04 1 views
0

내 Angular2 프로젝트에서 ng2-select2을 사용하고 있지만 select2에서 렌더링 할 수없는 문제가 있습니다. 데이터를 얻지 만 templateResult에 옵션을 표시 할 수 없습니다.ng2-select2 ajax에서 옵션을 만드는 방법

public options: Select2Options; 
public ajaxOptions: any; 

public ngOnInit(): void { 

    this.ajaxOptions = { 
     url: 'https://localhost:8080/ajaxdata/testselect2', 
     dataType: 'json', 
     delay: 500, 
     cache: false, 
     data: (params: any) => { 
      return { 
       search: params.term, 
       gotoPage: params.page 
      }; 
     }, 
     processResults: (data: any, params: any) => { 
      params.page = params.page || 1; 
      return { 
       results: data.objectValue.items, 
       }), 
       pagination: { 
        more: (params.page * 10) < data.objectValue.total_count 
       } 
      }; 
     }, 
    }; 

    this.options = { 
     ajax: this.ajaxOptions, 
     templateResult: (object: Select2SelectionObject) => { 
      // should create option in here 
     } 
    }; 

답변

0

HTML

<select2 [options]="options"></select2> 

TS 나는 그것을 해결했습니다. selectson2 형식이 아닌 json이 있으므로 processResults에서 코드를 변경하고 templateResult를 제거하면 옵션이 렌더링됩니다.

processResults: (data: any, params: any) => { 
    params.page = params.page || 1; 
    return { 
     results: $.map(data.objectValue.items, function (obj) { 
      return { id: obj.code, text: obj.desc }; 
     }), 
     pagination: { 
      more: (params.page * 10) < data.objectValue.total_count 
     } 
    }; 
}, 
+0

나는 동일한 문제에 직면하고있다. 심지어 AJAX 호출을 트리거하지도 않았습니다. 어떻게이 효과를 얻었습니까? – Jayant

+0

AJAX 호출을 트리거 할 수 있지만 html로 렌더링 할 수 없습니다. 코드를 표시해 주시겠습니까? –

+0

사실은 일종의 코드 복사본입니다. [this this] (https://stackoverflow.com/questions/46050414/use-ajax-in-ng2-select2)를 참조하십시오. 나는이 질문에 그것을 게시했다. – Jayant