后代组件未使用所提供的服务

时间:2018-10-18 12:33:36

标签: angular angular5

设置

因此,我尝试将几个可重用的组件一起使用。它们如下:

  • SmartNavTileGroup
  • SmartNavTile
  • RadioCheckboxGroup
  • RadioCheckboxWrapper

在标记中实施时,如下所示:

<smart-nav-tile-group>
    <smart-nav-tile></smart-nav-tile>
    <smart-nav-tile></smart-nav-tile>
</smart-nav-tile-group>

SmartNavTileGroup组件实现RadioCheckboxGroup,而SmartNavTile组件实现RadioCheckboxWrapper

因此,在结果标记中,它们按以下顺序进行:

<smart-nav-tile-group>
    <radio-checkbox-group>
        <smart-nav-tile>
            <radio-checkbox-wrapper>

目标

此处的目标是允许RadioCheckboxGroup访问其中的RadioCheckboxWrapper的所有实例。

我尝试过的东西

到目前为止,我已经尝试了ViewChildrenContentChildren以及forwardRef注入并使用共享服务来完成此操作。

问题

到目前为止,让我接近完成这项工作的唯一一件事就是服务。

RadioCheckboxGroupServiceRadioCheckboxGroup模块和组件一起提供。这具有为每个RadioCheckboxGroup创建服务的理想结果。

但是,每当将此服务注入RadioCheckboxWrapper时,都会创建该服务的第三个实例,并将RadioCheckboxWrapper的所有实例放入此RadioCheckboxGroupService的实例中,无论它们在服务器上的什么位置。页。

因此,出于某些原因,他们正在创建自己的全局单例,而不是使用RadioCheckBoxGroup创建的单个实例,而对于我来说,我不知道为什么他们不使用由RadioCheckboxGroup创建的单个实例`RadioCheckboxGroup。

从这一系列的控制台日志中可以看到,每个RadioCheckboxGroupService都会在需要时创建一个RadioCheckboxWrapper的实例,但是每个RadioCheckboxGroupService的实例都会将自己添加到第三个全局单例中RadioCheckboxGroup的实例,而不是RadioCheckboxWrapper设置的服务:

enter image description here

问题

如何获取RadioCheckboxGroup的每个实例以使用其INSERT INTO public."MyTable" ( "SomethingIdFk", "Date" ) VALUES ( 8, CURRENT_TIMESTAMP ); 的祖先实例创建和提供的服务,而不是创建全局服务并将其添加到其中?

1 个答案:

答案 0 :(得分:0)

答案

此处的解决方案是确保将RadioCheckboxWrapper导入提供RadioCheckboxGroupService的模块中。在这种情况下,需要将其导入到RadioCheckboxGroup模块中。