加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 如何以最有效的方式提取ViewContainerRef和Component

发布时间:2020-12-17 07:51:54 所属栏目:安全 来源:网络整理
导读:我使用angular-material mdSidenav并希望以编程方式打开它并插入自定义组件. 我使用@ViewChild(‘varName’)来提取componentInstance和@ViewChild(‘varName’,{read:ViewContainerRef})来提取我放置内容的容器. 所以,我的问题是 – 是否可能只有1个@ViewCh
我使用angular-material mdSidenav并希望以编程方式打开它并插入自定义组件.

我使用@ViewChild(‘varName’)来提取componentInstance和@ViewChild(‘varName’,{read:ViewContainerRef})来提取我放置内容的容器.

所以,我的问题是 – 是否可能只有1个@ViewChild并从提取的引用中获取其他信息.

第二个问题 – 哪些值允许读取属性? ElementRef / ViewContainerRef / ……?

更新:

我发现,mdSidenav的ViewContainerRef是我组件的错误容器.如何将component.hostView放在mdSidenav hostView中?

Is it possible just 1 @ViewChild and get other info from extracted
reference.

不,您不能为一个属性指定多个读取类型.例如,您在html中指定以下内容:

<ng-template mydir #vc></ng-template>

现在它可以被读作ElementRef,TemplateRef,ViewContainerRef或MyDirectiveInstance.您不能指定多个读取类型,因为Angular不知道该节点要返回什么.您必须为每个查询属性指定单一读取类型.通常你不能从另一种中获得一种类型.两者都有

Which values allowed for read property ?
ElementRef/ViewContainerRef/… ?

您可以通过查询获得以下类型:

> ElementRef
> TemplateRef
> ViewContainerRef
>提供者(组件/指令实例)

从这个源代码可以看出:

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读