有人知道如何获取组件模板中定义的元素吗?聚合物使得它真正用简单的$和$$.
我只是想知道如何在Angular中实现它.
以教程为例:
import {Component} from '@angular/core'
@Component({
selector:'display'
template:`
<input #myname(input)="updateName(myname.value)"/>
<p>My name : {{myName}}</p>
`
})
export class DisplayComponent {
myName: string = "Aman";
updateName(input: String) {
this.myName = input;
}
}
Run Code Online (Sandbox Code Playgroud)
如何从类定义中捕获por input元素的引用?
角2提供@ViewChild,@ViewChildren,@ContentChild和@ContentChildren用于查询一个组件的派生元素装饰器.前两个和后两个有什么区别?
我知道不建议使用替换elementRef.nativeElement,建议用某种标签ViewChild或类似的东西替换 iT 。我想知道当我有一个通用类型的本机元素时,如何使用这些标签来代替它的使用。我需要访问未知类型的通用元素的 id:
elmentRef.nativeElement.id
Run Code Online (Sandbox Code Playgroud)
我的相关 package.json:
"@angular/common": "4.2.5",
"@angular/compiler": "4.2.5",
"@angular/core": "4.2.5"
Run Code Online (Sandbox Code Playgroud)
我正在尝试替换这个代码,它是我图书馆中可能其他人的父代码,因为我得到:
import { ElementRef } from '@angular/core';
export abstract class IdentityComponent {
id = '';
constructor(protected el: ElementRef) {
if (el) {
this.id = el.nativeElement.id;
}
}
}
Run Code Online (Sandbox Code Playgroud) 免责声明:我刚刚发现我的问题几乎是该问题的重复:Angular在父对象上使用指令获取嵌套元素 问题本身并不相同,但是可接受的答案解决了我的问题
我的问题:我想使用@ViewChild访问子组件的属性“ .nativeElement”。在SO上已经讨论了这个问题,但是没有适合我的用例的解决方案。我将进一步参考其他问题。
这是父组件的html:
<h1>The Title</h1>
<some-child-component #wanted></some-child-component>
<some-other-component></some-other-component>
Run Code Online (Sandbox Code Playgroud)
现在,我尝试像这样访问#wanted-component:
@ViewChild('wanted') myWantedChild: ElementRef;
Run Code Online (Sandbox Code Playgroud)
但是我在这里没有得到ElementRef,我将得到对SomeChildComponent-Instance的引用,就像在接受的答案中指出的那样: 如何在Angular4中访问组件的nativeElement?
我可以在Childcomponent本身中保留ElementRef,但可以将其注入构造函数中。但是我需要在父组件中使用ElementRef。
访问一个简单的div块的ElementRef很容易:
<div #wanted>something</div>
Run Code Online (Sandbox Code Playgroud)
在这里,您可以通过@ ViewChild-Annotation直接获得ElementRef(在此处比较已接受的答案:在angular2中访问本机元素的正确方法是什么(2种差异方法)文档稀缺?
现在对我来说问题仍然存在:如何获取用作子组件的组件的ElementRef?我的确切用例是,我想获得子组件的高度(以像素为单位)。据我所知,我需要nativeElement-Reference。
编辑:
我可以将在子组件的构造函数中获得的ElementRef公开为公共属性。但这似乎有点...