我有两个组件:ComponentOneComponentTwo

@NgComponent(...)
class ComponentOne {
}

<div>
  <h1>Component One</h2>
  <content></content>
<div>

@NgComponent(...)
class ComponentTwo {
}

<div>
  <h1>Component Two</h2>
<div>

然后,我有以下标记:

<component-one>
  <component-two></component-two>
</component-one>

如何从ComponentTwo引用ComponentOne。更具体地说,我有一个处理click事件的方法,需要将click事件委托(delegate)给它的 child 。哪种方法最好?

最佳答案

我将ComponentOne注入(inject)ComponentTwo,并在ComponentTwo的构造函数中将ComponentTwo分配给ComponentOne

 ComponentTwo(ComponentOne c1) {
   c1.componentTwo = this;
 }

您还可以创建一个仅执行此操作的指令,以避免ComponentTwo与ComponentOne紧密耦合。

AssignComponentTwoDirective(ComponentOne c1, ComponentTwo c2) {
  c1.componentTwo = c2;
}

也许有更好的方法,但是我还没有看到。

您必须将visibilityComponentOne设置为子级。

@NgComponent(
  selector: 'component-one',
  visibility: NgDirective.CHILDREN_VISIBILITY,
  ...)
class ComponentOne ...

另请参阅angular 2 / typescript : get hold of an element in the template

关于dart - 如何在AngularDart中从其父级引用子级组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21754244/

10-10 15:19