angular – 如何以最有效的方式提取ViewContainerRef和Component
我使用angular-material mdSidenav并希望以编程方式打开它并插入自定义组件.
我使用@ViewChild(‘varName’)来提取componentInstance和@ViewChild(‘varName’,{read:ViewContainerRef})来提取我放置内容的容器. 所以,我的问题是 – 是否可能只有1个@ViewChild并从提取的引用中获取其他信息. 第二个问题 – 哪些值允许读取属性? ElementRef / ViewContainerRef / ……? 更新: 我发现,mdSidenav的ViewContainerRef是我组件的错误容器.如何将component.hostView放在mdSidenav hostView中?
不,您不能为一个属性指定多个读取类型.例如,您在html中指定以下内容: <ng-template mydir #vc></ng-template> 现在它可以被读作ElementRef,TemplateRef,ViewContainerRef或MyDirectiveInstance.您不能指定多个读取类型,因为Angular不知道该节点要返回什么.您必须为每个查询属性指定单一读取类型.通常你不能从另一种中获得一种类型.两者都有
您可以通过查询获得以下类型: > ElementRef 从这个源代码可以看出: export function getQueryValue( view: ViewData,nodeDef: NodeDef,queryValueType: QueryValueType): any { if (queryValueType != null) { // a match let value: any; switch (queryValueType) { case QueryValueType.RenderElement: value = asElementData(view,nodeDef.index).renderElement; break; case QueryValueType.ElementRef: value = new ElementRef(asElementData(view,nodeDef.index).renderElement); break; case QueryValueType.TemplateRef: value = asElementData(view,nodeDef.index).template; break; case QueryValueType.ViewContainerRef: value = asElementData(view,nodeDef.index).viewContainer; break; case QueryValueType.Provider: value = asProviderData(view,nodeDef.index).instance; break; } return value; } } RenderElement指向与视图节点关联的本机DOM元素,但它在内部使用,并且无法使用组件中的查询访问AFAIK. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在bash中重定向嵌套函数调用的输出?
- angularjs – 复杂角度js类
- angular – Page是2个模块声明的一部分:离子构建产生错误
- angularjs – md-menus在使用ng-repeat时没有关闭
- twitter-bootstrap – 按钮在Bootstrap 2.0.1中一起运行
- python – 将Django和Postgresql连接到Docker
- 纸小墨ink简洁主题story爱上你的故事
- 使用vim远程编辑serverB上的文件,只能从serverA访问
- bootstrap-4 – 折叠无法在ng-bootstrap和angular 4 app中使
- Bootstrap Table使用整理(四)-工具栏