나는이 주제와 관련된 게시물을 읽었지만 아직 해결 방법을 찾지 못했습니다.약속 완료 될 때까지 기다림
이 내 시나리오 : PermissionService, 보이는 같은 :
나는 서비스가 나는 서비스를 주입 한 내 구성 요소에서
constructor(private http: HttpClient){}
hasPermission(operation: string, objects: string): Observable<Permission> {
let queryStr: HttpParams = new HttpParams();
queryStr = queryStr.set(“operation”,operation);
queryStr = queryStr.set(“objects”,objects);
return this.http.get<Permission>(this.url + permissionType, { params: queryStr });
}
및 I는 다음과 같이 사용 :
hasCreatePermission(){
this.permissionsService.hasPermission("C","Categories").subscribe(
res => {
this.canCreate = res.data[0].result;
}, (err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log('An error occurred:', err.error.message);
} else {
console.log(`Backend returned code ${err.status}, body was: ${err.error}`);
}
});
}
약속이 완료되면 canCreate 변수에 권한 값이 설정됩니다.
이 변수는 내 템플릿에서 단추와 같은 일부 구성 요소를 숨기거나 표시하는 데 사용됩니다.
이 모든 것들이 올바르게 작동합니다. 그래서 내 질문은 .. 거기에 어떤 방법이있다 각도로 동기화 할 수 있습니까?
This.canCreate = this.servicePermission.hasPermission ... :
같은 방법을 호출 할 수합니다. 약속이 해결 될 때까지 실행을 contiune하지 않기 때문에 템플릿이 렌더링되기 전에 결과를 얻을 수 있습니다.
권한으로 인해 몇 초 후에 사라질 버튼이있는 페이지를 표시 할 수 없기 때문에이 기능이 필요합니다.
서버에서 데이터를 가져 오는 것과 같이 백엔드에 대한 호출이 비동기 여야한다는 데 동의하지만이 경우 페이지를 적절하게 렌더링 할 수 있어야합니다.