中描述的那样工作我想要获取元素的offsetLeft,但是我得到的值不正确,除非使用setTimeout。Angular 2指令的生命周期钩子(ngAfterContentInit)不能像文档
基本上在指令中我有这样的:“生命周期挂钩后指令的内容已经完全初始化被称为”
ngAfterContentInit() {
console.log(this.el.nativeElement.offsetLeft);
}
文档指出此为ngAfterContentInit。但不是返回40px它返回8px(甚至不知道它在哪里得到8)。
任何想法,为什么它不工作?是否因为该指令的根元素不被视为该指令的一部分,只有它的孩子是?
它,但它也看起来非常哈克 – yodalr
@yodalr,尽管它看起来的确哈克 - 它实际上是不。 :)这只是角度运作的方式。这里的要点是,你**有**在稍后的时间点看内容,一般来说这是确保你做到的最简单的方法。但是,如果您的内容取决于某些长的http请求(即您的父组件呈现后很长时间)而呈现,那么选择正确时间点的唯一可靠方法是明确与内容中的组件进行通信,并通过类似的方式询问它们意味着他们准备好了。 –