3

저는 여전히 ng2를 배우려고 노력 중이므로 일반적인 멍청한 문제라고 확신하지만 온라인에서 찾은 해결책은 없습니다. 아무도 내 문제가 뭔지 알아?Angular 2 : http 서비스 업데이트 후 템플릿이 업데이트되지 않습니다.

나는

ngOnInit(){ 
    this.eventService.getEventList() 
     .subscribe(events => { 
      this.zone.run(()=>{ 
       this.events = events; 
       console.log(this.events) 
      }); 
     }); 
} 

내 템플릿 그냥 JSON 형식으로 출력 변수 이벤트를 시도 내 구성 요소에 가입 관측

getEventList(): Observable<any>{ 
    return this.http.get('./assets/data.json') 
     .map(response => response.json()); 
} 

로 getEventList() 메서드를 사용하여 서비스를

<p> 
    {{ 
     events | json 
    }} 
</p> 

보시다시피 이벤트의 값을 로컬 v zone.run() 콜백에서 사용 가능합니다. 여전히 템플릿 업데이트가 표시되지 않습니다. 또한 ApplicationRef.tick 및 ChangeDetectorRef.detectChanges() 시도했지만 둘 다 내 변경 내용을 감지 할 것 같습니다.

Console.log 호출은 데이터가 업데이트되었음을 ​​확인합니다. 이 구성 요소에서 시작된 클릭 핸들러도보기를 업데이트하는 것으로 보입니다.

누구나 내가 뭘 잘못하고 있는지 알아? 조언을 얻기에 충분한 코드를 게시 했습니까? 그 밖의 무엇을보고 싶은지 알려주십시오.

+1

HTML을 게시하십시오. –

+0

아주 작은 @StefanSvrkota하지만 거기에 가야합니다. 감사! –

답변

0

씨는 인 OnPush에 ChangeDetectionStrategy을 설정했다. 이 기본 설정 내 문제가 해결되었습니다.

0

getEventList() 메서드를 호출하기 전에 당신이 this.events에 값을 할당하지 않은 가정을 수행해야합니다

<div *ngIf="events"> 
{{ events | json }} 
</div> 
+0

감사! 나는 값으로 빈 배열을 할당하고 있었지만, 당신의 제안은 도움이되지 않았다. –

+0

'this.zone.run'없이 코드를 테스트했는데 그것은 매력처럼 작동합니다. 이처럼'ngOnInit() { this.eventService.getEventList() .subscribe (이벤트 => { this.events의 = 이벤트, 을 console.log (this.events) }); }' –

+0

this.zone.run으로도 작동합니다. 방금 시도했습니다. 너의 목적에 어떤 문제가 있는지 모르겠다. plunker에 코드를 복제 한 다음 여기에 게시하십시오. –

관련 문제