Typescript 如何从Angular2中的父组件类访问子组件类?
在Angular 2中,如何从父组件类访问子组件类?e、 gTypescript 如何从Angular2中的父组件类访问子组件类?,typescript,angular,Typescript,Angular,在Angular 2中,如何从父组件类访问子组件类?e、 g import {Component, View} from 'angular2/core'; @Component({selector: 'child'}) @View({template: `...`}) class Child { doSomething() { console.log('something'); } } @Component({selector: 'parent'}) @Vie
import {Component, View} from 'angular2/core';
@Component({selector: 'child'})
@View({template: `...`})
class Child {
doSomething() {
console.log('something');
}
}
@Component({selector: 'parent'})
@View({
directives: [Child],
template: `<child></child>`
})
class Parent {
constructor() {
//TODO: call child.doSomething() when the child component is ready
}
}
从'angular2/core'导入{Component,View};
@组件({选择器:'子'})
@视图({模板:`…`})
班童{
doSomething(){
console.log('something');
}
}
@组件({选择器:'父'})
@看法({
指令:[儿童],
模板:``
})
班级家长{
构造函数(){
//TODO:在子组件就绪时调用child.doSomething()
}
}
在本例中,我将如何从
父组件的构造函数或某个回调函数调用子组件的doSomething()
方法。这非常简单,但您必须记住以下几点,首先是代码
若要引用您的子视图,在这种情况下,您希望您的子视图位于视图中,因此必须使用@ViewChildren
,并且必须等待视图初始化,才能这样做
@组件({
选择器:“你好”,
模板:``,
指令:[儿童]
})
导出类父级实现AfterViewInit{
@ViewChildren(Child)children:QueryList;
afterViewInit(){
为了(让这个孩子,孩子们){
儿童。doSomething();
}
}
}
注意
如果要传输到ES6,则afterViewInit()
中的循环将起作用,因为angular2在内部使用。如果您正在传输到ES5,那么您必须从typescript开始解决它(请参阅plnkr了解解决方法)
这是我的建议
我希望它有帮助:)您可以在父组件中使用@ViewChild
来访问子组件的任何方法
@Component({
selector: 'parent',
directives: [Child]
})
export class Parent {
@ViewChild(Child) childComponent: Child;
ngAfterViewInit() {
// The child is available here
childComponent.doSomething();
}
}
注意:此代码段适用于angular2 rc4版本 在我的例子中,我只有一个子组件,所以我只使用this.children.first
。谢谢@rob如果您只需要一个子组件,请使用而不是@ViewChildren
哦,更好。谢谢,有没有一种方法可以使用ID或其他什么来访问一个特定的孩子?就像JS中的getElementById一样,这里的备忘单上也写着“不适用于指令”。还有别的办法吗?