2017-12-29 24 views
1

나는 p 드롭 다운에서 primatible을 가지고 있는데, p 드롭 다운에서 항목을 선택하고 onChange 이벤트와 함께 p 데이터 테이블 (처음에는 비어 있음)에 추가하려면 ngFor 하지만 p-datatable을 사용하지 않는다면 어떻게해야합니까? 감사합니다Angular 2를 사용하여 선택한 p-dropdown 항목을 primel p-datatable 목록에 추가하는 방법은 무엇입니까?

추신. 템플릿에

  ... 
    public existencias: Existencia[] = []; 
    public ex_pd: Existencia[] = []; 
    public medicamentos: SelectItem[]; 
       ... 
    private getAllExistencias() { 
      this.existenciaService 
       .getAllExistencias() 
       .subscribe(
       data => { 
        this.existencias = data; 
        this.medicamentos = []; 
        for (let i = 0; i < this.existencias.length; i++) 
        { 
         this.medicamentos.push({ label: this.existencias[i].medicamento.nombre , value: this.existencias[i].medicamento.nombre }); 
        } 
       }, 
       error => console.log(error), 
       () => console.log('Complete') 
       ); 
     } 

public addMedicamento(medic: string) {// 

     let e = this.existencias.filter(e => e.medicamento.nombre == medic); 
     this.ex_pd.push(e[0]); 
    } 

:

작동이 방법 : I는 구성 요소에서 각 2

을 사용하고

<tr *ngFor="let pd of ex_pd; let i = index"> 

그러나이 방법은 아무것도 페이지에 표시되지 않습니다 - 데이터 :

답변

0

"immutable"속성이 false로 설정되어 있는지 확인하십시오. 이 속성은 기본적으로 true로 설정되어있어서 내가 말하는 것과 비슷한 오류가 발생했습니다.

<p-dataTable [immutable]="false" ...> 

https://www.primefaces.org/primeng/#/datatable

+0

네, 그게 문제였습니다. 정말 고마워요! – user3307817

+0

@ user3307817 다른 사람들이 쉽게 찾을 수 있도록 응답 및 upvote로 표시하십시오. 고맙습니다 :) –

0

예, 그는 그것이 맞습니다, 그러나 아마 가장 좋은 방법은 불변의 원칙을 따르는 것입니다 무엇을했다!

즉, 배열/개체를 항상 다시 만들어야합니다. 어떻게 쉽게 할 수 있을까요?

//use spread operator 
newArr = [...oldArr]; 

//use Object.Assign 
newArr = Object.assign([], oldArr)