Angular2 Zone 내에서 프로파일보기를 업데이트하는 HTTP 요청을 어떻게 실행할 수 있는지 궁금합니다. 이 요청이 비동기이기 때문에Angular2로 NgZone에서 HTTP 요청을 실행하십시오.
이export class ProfileComponent implements OnInit {
constructor(
private auth: Auth,
private authHttp: AuthHttp) {}
ngOnInit() {
// update profile information
let headers: any = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
this.authHttp
.get('https://' + myConfig.domain + '/api/v2/users/' + this.auth.userProfile.user_id, {headers: headers})
.map(response => response.json())
.subscribe(
response => {
this.auth.userProfile = response;
localStorage.setItem('profile', JSON.stringify(response));
},
error => console.log(error.json().message)
);
}
}
문제는, 프로필 페이지가로드 이 전에이 요청이 성취되어 있고 프로필 : 내 최고 수준의 프로파일 구성 요소에서 나는 현재 authHttp
를 사용하여 하나의 간단한 HTTP 요청을하고 있어요 업데이트됩니다. 새로 고침을 클릭하면 처음에는 아무 일도 일어나지 않습니다. 이전 데이터가 프로필에로드되고 새 데이터가 이후에 발생하기 때문입니다. 두 번째로 새로 고침을 누르면 모든 것이 작동합니다. 마지막 요청에서로드 된 새 데이터 만 사용하기 때문입니다.
이 문제는 NgZone
을 사용하여 해결할 수 있습니까? 어떻게 든이 요청을 영역에 포함 할 수 있습니까? 완료되면 구성 요소 트리를 다시 평가할 수 있습니까?
아직 조금 혼란 스럽습니다. 무엇이 업데이트되지 않습니까? 보기? 보기에서 auth.userProfile에 바인딩하고 있습니까? authHttp를 통한 요청이 다시 돌아 왔을 때 업데이트되지 않습니다. – Steveadoo
@Steveadoo 'auth.userProfile'의 일부 데이터를 프로필 구성 요소 템플릿의 다른 구성 요소에 입력으로 전달하므로'auth.userProfile'을 업데이트하기 전에 이전 데이터를 입력으로 전달합니다. http 요청 –
영역 문제인지 어떻게 알 수 있습니까? AuthHttp를 보면 각도 영역 밖에서도 실행되는 것처럼 보이지 않습니다. auth.userProfile을 @Input() 속성으로 다른 구성 요소에 전달하면 변경 한 내용이 자동으로 업데이트됩니다. 이 다른 구성 요소의 ngOnInit 내부에서 @Input 속성을 읽었습니까? – Steveadoo