【问题标题】:Call directive when host element is rendered渲染宿主元素时调用指令
【发布时间】:2020-08-28 14:31:27
【问题描述】:

我在我的角度指令中注入一个表单作为宿主元素。我想检索该表单的输入元素列表。但是,看起来代码是在主机(表单)实际呈现之前执行的(即,在创建输入元素之前)

 constructor(private elementRef: ElementRef,private renderer: Renderer2) { 
  let  formElement = <HTMLFormElement>elementRef.nativeElement;   
  let inputFields = console.log(formElement.getElementsByTagName("input")); //This is blank
  console.log(formElement.getElementsByTagName("input"));      //This is working, but lazy loaded

有没有什么办法只有在宿主视图准备好之后才能执行逻辑?有点像,@HostListener 一些准备好的活动。

【问题讨论】:

标签: angular typescript angular-directive


【解决方案1】:

正如@Aluan 所建议的,我将其作为未来参考的答案: 在 Directive 类中实现AfterViewInit

DirectiveClass implements AfterViewInit {
constructor(private elementRef: ElementRef,private renderer: Renderer2) { 

  }
ngAfterViewInit(){
  let  formElement = <HTMLFormElement>this.elementRef.nativeElement;   
  let inputFields = console.log(formElement.getElementsByTagName("input")); //This also works
  console.log(formElement.getElementsByTagName("input"));      //This Works
}

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2017-01-31
    • 2019-10-19
    • 2018-04-19
    • 2018-05-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多