Javascript 智能/转储组件:使用ng内容进行深度嵌套

Javascript 智能/转储组件:使用ng内容进行深度嵌套,javascript,angular,ngrx,Javascript,Angular,Ngrx,考虑以下应用程序布局: 我们的应用程序由智能组件a和哑组件a\u dumb组成A_dumb包含哑子组件B_dumb和C_dumb,它们是A的孙子 B_dumb和C_dumb从A中提取数据。他们的观点是,除了他们在A_dumb观点中的立场之外,独立于A_dumb 大多数关于数据分发和事件处理的建议要么是采用bucket-brigging(A->A\u-dumb->B\u-dumb,反之亦然),要么使用统一的服务 当我使用ngrx时,我倾向于不使用该服务,因为我不想处理订阅,而是使用智能组件模板中

考虑以下应用程序布局:

我们的应用程序由智能组件a和哑组件a\u dumb组成A_dumb包含哑子组件B_dumbC_dumb,它们是A的孙子

B_dumbC_dumbA中提取数据。他们的观点是,除了他们在A_dumb观点中的立场之外,独立于A_dumb

大多数关于数据分发和事件处理的建议要么是采用bucket-brigging(A->A\u-dumb->B\u-dumb,反之亦然),要么使用统一的服务

当我使用ngrx时,我倾向于不使用该服务,因为我不想处理订阅,而是使用智能组件模板中的异步管道,这让我有了bucket Brigging

然而,斗式旅是很多样板,我们有
。我们可以将所有哑组件直接绑定到智能组件,然后将它们投影到“主”哑组件

这是智能组件:

// a.html
<a-dumb [data]="mybinding$ | async">
  <b-dumb [data]="myotherbinding$ | async"></b-dumb>
  <c-dumb [data]="mythirdbinding$ | async"></c-dumb>
</a-dumb>
//a.html
这是一种观点:

// a-dumb.html
<div class="...">
  ...
  <ng-content select="b-dumb"></ng-content>
  ...
  <ng-content select="c-dumb"></ng-content>
  ...
  <!-- having a sink is always nice :) -->
  <ng-content></ng-content>
</div>
//a-dumb.html
...
...
...
在我看来,这对于像小部件一样的孙辈来说是有意义的,他们不直接属于组件的视图,而是从视图中绘制样式和定位


我对你对这个话题的看法很感兴趣,如果这种方法可取的话,我对你的利弊也很感兴趣。不幸的是,尽管搜索了这个,我还是找不到任何输入…

您正在寻找某某的意见,某某不适合提出此类问题。参见第节。我很清楚“我如何提出一个好的问题?”一节。虽然我不是在寻找“没有任何效果,只有帮助”的问题的答案,但我确实在寻找一个一般设计问题的答案。如果你真的阅读了,你会发现这个问题在SOs自己的标准下是完全正确的。B_Dumb和C_Dumb是A_Dumb的静态孩子吗?意思是说,A_Dumb总是实例化相同的组件还是它们是动态/灵活的?在我的例子中,它们总是相同的,直到有人决定把它们换掉。然而,如果它们是随机的或依赖于数据的话,一个有趣的观点是:如果它们是相同的,你可能要考虑以下内容:1)让A~DIAB接受作为数据的输入。2) 在[binding1]=“binding1$| async”中指定值。3) 让B_Dumb为绑定定义和输入。4) 用输入值在哑巴中实例化B_Dumb,您要从某某那里寻找意见,但这不适合此类问题。参见第节。我很清楚“我如何提出一个好的问题?”一节。虽然我不是在寻找“没有任何效果,只有帮助”的问题的答案,但我确实在寻找一个一般设计问题的答案。如果你真的阅读了,你会发现这个问题在SOs自己的标准下是完全正确的。B_Dumb和C_Dumb是A_Dumb的静态孩子吗?意思是说,A_Dumb总是实例化相同的组件还是它们是动态/灵活的?在我的例子中,它们总是相同的,直到有人决定把它们换掉。然而,如果它们是随机的或依赖于数据的话,一个有趣的观点是:如果它们是相同的,你可能要考虑以下内容:1)让A~DIAB接受作为数据的输入。2) 在[binding1]=“binding1$| async”中指定值。3) 让B_Dumb为绑定定义和输入。4) 使用输入值在Dumb中实例化B_Dumb