从父级中的子级访问元素标记名

Posted

技术标签:

【中文标题】从父级中的子级访问元素标记名【英文标题】:Access element tagnames from child in parent 【发布时间】:2019-09-08 18:10:39 【问题描述】:

我有两个组件,ParentComponent 和 ChildComponent:

parent.component.html

<child-selector #parent></child-selector>

parent.component.ts

@ViewChild('parent',  read: ElementRef ) parent: ElementRef<any>;


doThis(event) 
    this.parent.nativeElement.childNodes.forEach(e => 
        if (e.tagName === 'GRIDSTER-ITEM') 
          console.log("do stuff here");
        
      );

child.component.html

<gridster>
    <grister-item></gridster-item>
<gridster>

child.component.ts

如果代码是同一个组件,则代码将起作用,子 html 将直接位于父级中,#parent 将位于元素 &lt;gridster&gt; 上。

我应该使用什么来代替 ElementRef? 或者也许是另一种解决方案?

【问题讨论】:

你应该在你的父模板中使用&lt;ng-content&gt;&lt;/ng-content&gt;@ContentChildren装饰器来引用里面的组件 【参考方案1】:

您可以使 gridster-item 元素对子组件可用。

child.component.ts

@ViewChildren(GridsterItemComponent) gridsterItems;

parent.component.ts

@ViewChild(ChildComponent) childComponent;

doSomething() 
  this.childComponent.gridsterItems.callSomeMethod();

【讨论】:

以上是关于从父级中的子级访问元素标记名的主要内容,如果未能解决你的问题,请参考以下文章

仅展开父级中的子级 div

Quasar(vue)中嵌套在路由器中的子级中的父级触发方法

Spring data JPA:如何启用级联删除而不引用父级中的子级?

尝试从父级 IOS swift 3 中删除子级时,我的代表为零

PHP在父级中访问子级的私有属性

父级中的Java方法占位符在子级中使用[重复]