angular - 从 DOM 元素中获取 Angular 组件类
问题描述
我相信对此的答案是“否”,但是 Angular 中是否有一种方法/服务可以让我传入组件的根 DOM 节点(例如<foo-component>
)并接收组件实例(例如FooComponent
)?
我找不到与此相关的 SO 帖子。
例子:
<foo-component id="foo"></foo-component>
const fooElement: HTMLElement = document.getElementById('foo');
const fooInstance: FooComponent = getInstanceFromElement(fooElement);
Angular中有没有类似的方法getInstanceFromElement
?
编辑:
我不能使用ViewChild
...我正在寻找我可以使用的全球服务。假设我没有从组件类调用此方法。我很熟悉ViewChild
/ContentChild
他们不是我要找的。假设我在一个全局注入服务中,并且正在尝试执行以下操作:
class MyService {
constructor() {}
getInstanceFromElement(element: HTMLElement): Component<T> {
// Is there some special helper service I can use here?
}
}
解决方案
试试这样:
模板:
<foo-component #foo></foo-component>
TS:
@ViewChild('foo', { static: false }) fooComponent: FooComponent;
ngAfterViewInit() {
console.log(this.fooComponent)
}
推荐阅读
- java - Spring Boot:在类路径更改时刷新应用程序上下文
- sql-server - SSIS 包在 cmd 行中运行,但不在 SQL Server 中
- python - TF-IDF + 多元回归预测问题
- angular - NGB-Datepicker - 根据状态禁用日期
- c++ - 无法构建 heob,因为 windows.h 无法打开
- xmlstarlet - 如何使用 xmlstarlet 打印 XPath 匹配的位置?
- r - 在循环中沿列移动
- ffmpeg - 如何修复媒体源扩展错误:初始化段错过预期的 aac 轨道
- mongodb - 获取 mongodb 中不同字段值条件虎钳的计数
- web-scraping - 网络抓取特定单词和它之前和之后的几个单词