首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Angular2中的父组件类访问子组件类?

如何从Angular2中的父组件类访问子组件类?
EN

Stack Overflow用户
提问于 2015-11-02 20:55:52
回答 2查看 3.3K关注 0票数 4

在角2中,如何从父组件类访问子组件类?例如:

代码语言:javascript
复制
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
    }
}

在本例中,如何从Child组件的构造函数或回调函数调用Parent组件的doSomething()方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-02 22:09:48

这很简单,但您必须记住几点,下面我将详细介绍,首先是代码。

要引用您的子视图,在这种情况下,您希望您的子视图在视图中,所以您必须使用@ViewChildren,并且必须等待视图被初始化,所以您必须这样做

代码语言:javascript
复制
@Component({
    selector: 'hello',
    template: `<child></child>`,
    directives : [Child]
})
export class Parent implements AfterViewInit {
  @ViewChildren(Child) children: QueryList<Child>;

  afterViewInit() {
    for(let child of this.children) {
      child.doSomething();
    }
  }

}

Note

如果您要转到ES6,afterViewInit()内部的循环将工作,因为angular2内部使用Symbol.iterator。如果您正在转换到ES5,您将不得不解决它,因为类型记录does not support it (见plnkr的解决办法)。

这是plnkr

我希望它有帮助:)

票数 7
EN

Stack Overflow用户

发布于 2016-09-02 15:01:39

您可以在父组件中使用@ViewChild来访问子组件的任何方法。

代码语言:javascript
复制
    @Component({
      selector: 'parent',
      directives: [Child]
    })

    export class Parent {
        @ViewChild(Child) childComponent: Child;

        ngAfterViewInit() {
        // The child is available here
        childComponent.doSomething();
      }
    } 

注意:此代码片段用于angular2 rc4版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33486747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档