最近开始使用Angular2,遇到了以下情况
需要从兄弟组件访问元素,而不是从父Cmp访问元素。感谢您的关注
示例:
假设我们有相同的组件A和组件B. 水平。
需要ComponentB中templateA中的iframe元素隐藏或
删除元素。
的index.html
<component-A> </component-A>
<component-B> </component-B>
ComponentA.html
<div>
<iframe id="someIframe"></iframe>
</div>
ComponentB.html
<div>
<form id="someForm"></form>
</div>
@Component
({
selector:'component-A',
templateUrl:'/componentA.html'
})
constructor() {
}
@Component
({
selector:'component-B',
templateUrl:'/componentB.html'
})
constructor() {
//need to get hold of the iframe element to hide that.
}
答案 0 :(得分:0)
您可以使用@ViewChild
来获取兄弟组件。所以你的Component B类看起来应该是这样的;
import {Component,ViewChild,AfterViewInit} from 'angular2/core';
import {ComponentA} from './componentA';
@Component({
selector: 'component-B',
templateUrl: '/componentB.html'
})
export class ComponentB implements AfterViewInit{
@ViewChild(ComponentA)
child:ComponentA; //say get the first instance of ComponentA
ngAfterViewInit() {
console.log(this.child); //access the child here
}
}
详细了解@ViewChild here
答案 1 :(得分:0)
有几种方法可以在兄弟姐妹之间共享数据:
答案 2 :(得分:-1)
我当然不想直接从组件B访问该元素,您希望将它们分离。
解决这个问题的两种可能方法是: