首页 文章

对子组件执行方法

提问于
浏览
1

我有一个父组件和一个子组件 . 我希望能够从父组件上的某个方法调用子组件上的一些子方法 . 有没有办法获得父类的子组件实例的引用并调用子的公共方法?

@Component({
    selector: 'child-component'
})
@View({
    template: `<div>child</div>`
})
class ChildComponent{
    constructor () {

    }

    doChildEvent () {
        //  some child event
    }
}

@Component({
    selector: 'parent-component'
})
@View({
    template: `
        <child-component #child></child-component>
    `,
    directives: [
        ChildComponent
    ]
})
class ParentComponent {
    private child:ChildComponent;

    constructor () {

    }

    onSomeParentEvent() {
        this.child.doChildEvent();
    }
}

我尝试在模板中对孩子进行哈希并在课堂中引用它但没有成功 .

1 回答

  • 5

    这就是ViewChild的用途:

    //don't forget to import ViewChild
    
    class ParentComponent {
        @ViewChild(ChildComponent) private child:ChildComponent;
    
        constructor () {
           //this.child is undefined because constructor is called before AfterViewInit
        }
    
        onSomeParentEvent() {
            //this.child contains the reference you're looking for 
            this.child.doChildEvent();
        }
    }
    

    假设在AfterViewInit之后触发 onSomeParentEventthis.child 将包含对子组件的引用 .

相关问题