当前位置: 首页 > 知识库问答 >
问题:

Angular2 :从组件中获取同级组件模板中的元素

魏勇军
2023-03-14

哪里需要从同级组件访问元素,但不需要从父 Cmp 访问元素。

例:

需要组件 B 的 templateA 中的 iframe 元素来隐藏
或删除该元素。

index.html

<component-A> </component-A>
<component-B> </component-B>

ComponentA.html

<div>
  <iframe id="someIframe"></iframe>
</div>

<div>
   <form id="someForm"></form>
</div>

@组件

({
 selector:'component-A',
 templateUrl:'/componentA.html'

})

constructor() {

}

@组件

({
 selector:'component-B',
 templateUrl:'/componentB.html'

})

constructor() {
 //need to get hold of the iframe element to hide that.
}

共有3个答案

贾烨
2023-03-14

我当然不想直接从组件B中访问元素,你会想让它们分离。

解决这个问题的2种可能方法是:

  • 使用包含切换的服务隐藏或显示iframe
  • 或者可以使用事件机制,从组件A侦听的组件B触发事件,并相应地切换iframe元素
邵星河
2023-03-14

有几种方法可以在兄弟姐妹之间共享数据:

    姜淇
    2023-03-14

    您可以使用@ViewChild来获取同级组件。所以你的组件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
        }
    }
    
     类似资料:
    • 问题内容: 我使用一个带有两个自定义元素(v1)的Web组件制作了一个简单示例,其中一个嵌套在另一个中。index.html: app-container.html: 工具栏.html: 但是在toolbar.html 中与在app- container.html中相同,因此无法找到ID为的模板。如何解决这个问题呢? 示例已在Chrome 55上测试(不使用polyfill)。 问题答案: 包含对

    • 问题内容: 我可以在AngularJS 1.5组件中使用多个模板吗?我有一个具有一个属性的组件,因此我想基于该属性名称加载不同的模板。如何根据元素的属性名称加载模板? 谢谢。 问题答案: 我使用两种方法在1.5.x中制作组件的动态模板: 1)通过attr属性传递: 2)将服务注入模板并从那里获取模板: templateURL函数: 在getTemplate函数中,返回基于变量的模板URL 首先通过

    • 问题内容: 我希望能够弄清楚哪些React组件与某个DOM元素相关联。 例如,假设我有一个div,并且正在使用React渲染整个应用程序。div必须由React组件呈现-但是哪一个呢? 我知道React提供了方法“ getDOMNode ”来获取与React组件相关联的DOM节点,但是我想做相反的事情。 这可能吗? 问题答案: 没有。 React中的中心概念是您实际上在DOM中没有控件。相反,您的

    • 有一个父组件 A,上面有两个子组件,B 和 C。 在子组件 B 上有一个子组件 D,其中 D 里面有一个 textarea 在子组件 C 上有一个按钮,点击这个按钮获取 D 里面 textarea 的值。 我尝试的两个方案 方案一:可以通过直接操作 dom 来解决 方案二:通过 D 将 textarea 的值传递给 B,然后由 B 传给 A,再有 A 传给 C,但总是传不成功。 请问我的这个需求,

    • 我试图在父组件中显示子组件的状态,但不知何故,文本“abcde”仍然没有显示,这是示例代码 但不知怎么的,屏幕仍然是空的,“abcde”直到我点击两次,来自功能组件,所以我不知道发生了什么,请帮助,非常感谢

    • 问题内容: 为了在控制台中进行调试,React中是否有任何机制可以使用DOM元素实例来获取支持的React组件? 先前已经在生产代码中使用此问题时询问过此问题。但是,我的重点是用于调试目的的开发版本。 我熟悉React的Chrome调试扩展,但是并非在所有浏览器中都可用。结合使用DOM Explorer和控制台,可以很容易地使用“ $ 0”快捷方式来访问有关突出显示的DOM元素的信息。 我想在调试