2017-05-17 3 views
0

Angular 4 또는 PrimNG Datatables 모듈에서 버그가 발견되었습니다. 내가 노력하고 때 나는 주석의 경우 1이 코드를 실행하면PrimNG Datatable에서 Angular 4 - 버그가 발견되었습니다.

private nodes:any[] = [] 

ngOnChanges() { 
    //case 1 -> ok 
    //this.nodes.push({label: 'foo'}) 

    //case 2 -> ok 
    //this.nodes = [{label: 'foo'}] 

    this.someService.getAll().subscribe(      
     records => { 
      //case 3 ->ok 
      //this.nodes = [{label: 'foo'}] 

      //case 4 -> BUG 
      //this.nodes.push({label: 'foo'}) //datatable is not updated 
     } 
    ) 
} 

, 2 또는 3 모든 것이 OK지만 : 구성 요소

<span *ngFor="let node of nodes">{{node.label}}</span> //works with case 1,2,3 and 4 

<p-dataTable [value]="nodes"> //works with case 1, 2, and 3 (but not with 4!) 
    <p-column field="label" header="Label"></p-column> 
</p-dataTable> 

코드 :

나는 간단한보기를 사례 4 (사례 1과 동일하지만 서비스 해결 후)를 실행하는 경우 - 기본 데이터 테이블에 변경 사항이 표시되지 않는 것처럼 보입니다. Angular 2에서는 그런 문제가 없었습니다. 여기서 무슨 일이 일어나는지 설명해 주시겠습니까? :)

감사합니다.

답변

0

angular2와 angular4에서 동일한 동작을해야합니다. 사실 그것은 버그가 아니며 예상되는 동작입니다. 그것은 각도 감지가 어떻게 변화하는지와 관련이 있습니다. 변화 각도를 감지하려면 ===을 수행하십시오.

changeDetection이 ngOnChange에 의해 트리거되기 때문에 작동합니다.

그러나 케이스 4에서는 배열 nodes의 참조를 변경하지 않고 배열에 값을 추가하기 만하면됩니다.

다른 경우 각도가 nodes으로 변경되어 각도가 변경 사항을 감지 할 수 있습니다.

나는 당신이이 대답 그것을 가지고 더 많은 세부 사항을보고 조언 : Angular2 change detection: ngOnChanges not firing for nested object

+0

그럼, 왜 * ngFor 제대로하지만 primeng 변화를 감지? –

+0

호! 나는 html에 (서) 주석을 보지 않았다. .. 나쁘다. 나는 그것을 시도하고 나를 위해 그것은 ngFor와 함께 작동하지 않습니다 ... 당신은 1을 1 시경에 시작했습니다. – runit

+0

어떻게 가능합니까? 인터넷의 튜토리얼을 보시오. * ngFor를 사용할 때 배열에 무엇인가를 넣을 때 화면에 보이지 않는다. 여기도 마찬가지입니다. –