首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能获得组件封装主机ID吗?

您能获得组件封装主机ID吗?
EN

Stack Overflow用户
提问于 2016-10-19 19:02:54
回答 1查看 2.2K关注 0票数 4

是否有一种方法可以获得提供给组件的封装主机id?

如果您有一个使用ViewEncapsulation.Emulated的组件,那么DOM中的元素将有一个类似于_nghost-par-2.的属性名,这是一个赋予组件的唯一ID,用于封装相关的样式。

如何获得该ID作为组件的构造函数的一部分?

效应的某物:

代码语言:javascript
复制
@Component({
  hostId:string;
  ...
})
export class myComponent implements OnInit {
  constructor(host:Host) {
    this.hostId = host.id;
  }
  ...
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 20:17:33

该ID由以下部分组成:

代码语言:javascript
复制
_nghost   -   par    -     2
   |           |           |
 static      APP_ID   _nextCompTypeId

应用程序是“角/核”中的公正标记

如果需要避免将随机生成的值用作应用程序id,则可以通过使用此令牌配置根注入器的DI提供程序提供自定义值。

_nextCompTypeId是在私有类ViewUtils的框架内生成的。

似乎没有一个公共方法可以返回它的价值。所以以下几点可能会起作用

代码语言:javascript
复制
export class MyComponent { 
  id: string;
  constructor(@Inject(APP_ID) appId: string, vcRef: ViewContainerRef) {
    this.id = `${appId}-${vcRef.injector['_view'].viewUtils._nextCompTypeId - 1}`;
  }
}

另一种方法是通过attributes通过elementRef获得它。

更新

如果您在角9上,那么按照下面的答案如何在角9中访问组件唯一的封装ID

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40139548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档