首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Angular指令中查找嵌套组件

在Angular指令中查找嵌套组件
EN

Stack Overflow用户
提问于 2018-03-01 04:56:19
回答 1查看 179关注 0票数 0

我在Angular 4中遇到了一个问题。我有一个子页面,它的结构是:

代码语言:javascript
复制
<div tableOfContents>
    <page></page>

    <static-page>
        <page></page>
    </static-page>

    <dynamic-page>
        <page></page
    </dynamic-page>
</div>

我想收集tableOfContents指令中的所有页面组件。我尝试过@ContentChildren (Page, {descendants: true}),但它只返回<div tableOfContents>的一个直接子对象,有什么办法吗?静态页面和动态页面将在页面上动态添加/删除。@ViewChildren(Page)返回未定义

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 20:25:42

据我所知,你只有一个选项,因为你不能查询子组件中的组件。

您可以做的是将page实例存储在服务中,并在tableOfContents指令中从那里获取它们。

这样的代码应该就足够了:

代码语言:javascript
复制
import {Injectable} from '@angular/core';

import {PageComponent} from '<path-to-page>';

@Injectable()

export class PageInstancesService {

  public instances = [];

  constructor() {}
}

然后在您的page组件中,您将执行以下操作:

代码语言:javascript
复制
constructor(
  private pis: PageInstancesService
) {}

ngOnInit() {
  this.pis.instances.push({id: <some-unique-id>, instance: this});
}

推送新实例。要在实例被销毁后将其删除,需要添加ngOnDestroy

代码语言:javascript
复制
ngOnDestroy() {

  const i = // Function to get instance index in array goes here

  this.pis.instances.splice(i, 1);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49038399

复制
相关文章

相似问题

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