1
내가 코드에서 자신이 사용하는 구성 요소 템플릿의 인스턴스를 생성하는 지침이 있고 tempalte 치수를 변경됩니다의 innerHTML을 설정 : 이제지시어에서 구성 요소 인스턴스를 생성하는 동안 ngAfterViewInit()이 실행될 때까지 기다리는 방법은 무엇입니까?
var factory = this.resolver.resolveComponentFactory(MyComponentTemplate);
this.templateComponent = this.viewContainerRef.createComponent(factory);
this.templateComponent.instance.htmlStr = anyText;
을, 여기에 문제가 있습니다. 이 단계에서 내가 구성 요소의 크기에 정의되지 않은 얻을 것이다 : 디버그에서
console.log(this.templateComponent.instance.width); //undefined
console.log(this.templateComponent.instance.height); //undefined
을 내 구성 요소가 ngAfterViewInit()를 실행 한 후에 만 만 나는 내 지시에서 구성 요소 템플릿 폭과 높이를 읽을 수있는 것으로 나타났습니다과 그 값을 사용하십시오.
이 내가 ngAfterViewInit() 끝 까지보다 내가 내가 찾고 그 정보를 내 지시에서 필요로하는 일을 기다려야 내 지시어를 알 수있는 방법입니다.
왜 이것이 'ngAfterViewInit'에 있어야합니까? 'this.createComponent()'뒤에 그냥두면 어떨까요? 'ChangeDetectorRef'를 삽입하고'cdRef.detectChanges()'를 먼저 호출해야 할 수도 있습니다. –
당신은 절대적으로 옳습니다. detectChanges를 호출 한 후 작동했습니다. 고마워, 네가 날 구경 거리를 많이 구해줬구나. – AngularOne