如何在运行时调用ViewChild?

时间:2016-07-28 08:50:49

标签: angular

在Angular2中, 我想找到我的子组件,它是在运行时在模板中声明的。 我该怎么做? 例如:

@Component({

template: `
<cmp1 *ngIf=expression></cmp1>
<cmp2 *ngIf=!expression></cmp2>
    `

})
export class Component3{

findChild(){
// How to find cmp2
}

}

1 个答案:

答案 0 :(得分:1)

不确定“在运行时”是什么意思,但这通常是这样的:

@Component({
template: `
<cmp1 #cmp *ngIf=expression></cmp1>
<cmp2 #cmp *ngIf=!expression></cmp2>
`
})
export class Component3{

  @ViewChildren('cmp') cmp:QueryList;

  findChild(){
    return this.cmp.toArray()[0];
  }
}

Component1需要导入。

另见angular 2 / typescript : get hold of an element in the template