2016-06-10 6 views
0

최종 목표는 Angular2와 관련된 goolgle 맵을 작성하는 것입니다.Angular2, 타사 콜백 초기화 구성 요소

Google지도에는 자체 라이브러리가 있으며 callbak이 포함되거나 포함되지 않은 <script> 태그를 사용하여 초기화 할 수 있습니다.

http://maps.googleapis.com/maps/api/js?v=3&sensor=false&callback=initialize

가 나는 angular2 구성 요소를 초기화하거나 angular2 구성 요소의 함수를 호출이 콜백 함수를 사용하고 싶습니다. 예를 들어, 그 이후

http://maps.googleapis.com/maps/api/js?v=3&sensor=false&callback=MapCompnent.initMap

는 저 불가능 보인다 정적 방법이다. 내가 접근하는 또 다른 방법은

get googleMapReady() { 
    return window.google.maps; 
} 

처럼 구글지도 변수를 확인하고 *ngIf="googleMapReady"와 함께 사용하는 것입니다.

두 번째 방법을 시도하기 전에 Angular2 구성 요소 인스턴스 함수를 창 수준 콜백에서 호출 할 수 있는지 궁금합니다.

그렇다면 어디에서 그 예제를 찾을 수 있습니까?

답변

1

Googleapis는 방법의 범위가 window입니다. 메서드를 window에 할당하고 해당 이름을 URL에 전달합니다.

이것은 도움이 될 수도 있습니다. Angular 2 - communication of typescript functions with external js libraries

+0

답변 해 주셔서 감사합니다. 왜 관련 영역입니까? 나는 그것을 읽었지만, 영역이이 대답에 관련되어 있다는 것을 이해하지 못한다. http://stackoverflow.com/a/35297044/454252 – allenhwkim

+0

Angular가 존속하는 버블처럼 Angulars zone을 이미징 할 수있다. 'addEventHandler','setTimeout ', ...은 "거품"에 의해 호출 될 때 수정됩니다. Angulars zone은 그들이 발생할 때마다 Angular에 통지하도록 패치합니다. Angular가 변경 감지를 실행하는 경우입니다. 메소드 참조를'window.xxx'에 넘겨 주면 "버블"밖에서 호출됩니다. Angular는 이런 일이 발생했을 때 통지하지 않고 변경 감지를 실행하지 않습니다. 이것은 디버거에서 볼 수있는 성가신 버그 또는 모델이 변경되었지만 뷰가 업데이트되지 않는'console.log (xxx) '에 의해 발생합니다. –

+0

'zone.run (...) '을 사용하면 "bubble"내부에서 실행되는 코드를 만들고 Angular는 변경 감지를 실행해야 할 때를 압니다. 각도 변화 감지는 매우 똑똑한 개념이며 극도로 효율적이지만 일부 상황에서는 최대 효율로 작업을 수행 할 수 있도록 "수동"지원이 필요합니다. –

관련 문제