2017-04-03 10 views
0

내가 각도 2 실험 그리고 난이 내장 된 HTTP 서비스를 HTTP 요청 할 노력하고있어 :각도 2보기는 HTTP 호출 후에 업데이트되지

@Injectable() 
export class MyService { 
    constructor(private http: Http) { 
    } 

    public get(): Observable<string[]> { 
     return this.http.get('http://localhost:8080/endpoint') 
       .map((data) => <string[]>data.json()['content']); 
    } 
} 

사용법은 다음과 같습니다

export class MyComponent implements OnInit { 
    public content: string[]; 

    constructor(private myService: MyService) { 
    } 

    public ngOnInit(): void { 
     this.myService.get().subscribe((data) => { 
      this.content = data; 
     }); 
    } 
} 

데이터 할당을 실행하는 데 zone을 사용하면 예상대로 작동하지만 약간 해킹 된 것으로 느껴지고 실제로 작동하지 않는 이유를 알 수 없습니다.

코드가 각도 영역 밖에서 실행될 수 있지만 필자는 내장 기능 만 사용하는 이유를 이해하지 못합니다.

보기 바인딩 :

<div *ngFor="let str of content"> 
    {{ str }} 
</div> 

당신이 도와 주 시겠어요?

감사합니다.

+3

뷰 바인딩 바인딩은 어떤 모양입니까? 또한이 예제에서'zone.run (...) '이 필요한 이유를 알지 못합니다. –

+0

나도 마찬가지다. 왜 그것이 작동하지 않는지 이해할 수 없다. 뷰 바인딩을 추가했습니다. – galovics

+0

'

{{content | json}}
'을 (를) 추가하면 어떻게됩니까? –

답변

0

문제는 웹팩이나 제 코드가 아니라 제 3 자 코드였습니다.

나는 this answer을 기반으로 Google 로그인을 구현했으며 사용자가 볼 수 있듯이 문제를 일으킨 것으로 생각되는 네이티브 JS 핸들러를 사용합니다. 이 코드를 zone.run에 넣으면 모든 것이 제대로 작동합니다. 그 이유는 핸들러가 영역 컨텍스트 외부에서 실행되어서 뷰가 업데이트되지 않은 이유 인 것 같습니다.