是否有一种方法可以获得提供给组件的封装主机id?
如果您有一个使用ViewEncapsulation.Emulated的组件,那么DOM中的元素将有一个类似于_nghost-par-2.的属性名,这是一个赋予组件的唯一ID,用于封装相关的样式。
如何获得该ID作为组件的构造函数的一部分?
效应的某物:
@Component({
hostId:string;
...
})
export class myComponent implements OnInit {
constructor(host:Host) {
this.hostId = host.id;
}
...
}发布于 2016-10-19 20:17:33
该ID由以下部分组成:
_nghost - par - 2
| | |
static APP_ID _nextCompTypeId应用程序是“角/核”中的公正标记
如果需要避免将随机生成的值用作应用程序id,则可以通过使用此令牌配置根注入器的DI提供程序提供自定义值。
_nextCompTypeId是在私有类ViewUtils的框架内生成的。
似乎没有一个公共方法可以返回它的价值。所以以下几点可能会起作用
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
https://stackoverflow.com/questions/40139548
复制相似问题