如何将内容动态传递给 ComponentPortal 由 cdkPortalOutlet 渲染?

How to dynamically pass content to ComponentPortal to be rendered by cdkPortalOutlet?

我已经 Angular CDK Portals 工作了,因为我可以动态创建一个门户组件,将它附加到 cdkPortalOutlet,并让它呈现现有模板,但我不知道如何为该门户组件提供数据。

在找到 CDK Portals 之前,我遵循了 Dynamic Component Loader 上的 Angular 指南,该指南介绍了手动创建自定义准门户系统并设置 @Input 装饰器以接受您的数据,但是我在 CDK 门户中找不到任何关于类似 function/ability 的信息。

我也尝试跟随这篇 Angular-in-Depth 文章,但它似乎也在很大程度上重新发明了 CDK 门户网站的轮子。

我看到一些关于 "contexts" 和 EmbeddedViewRef 的讨论,但我没有找到足够的信息来说明它们的实际用途或实际使用方式(至少,不足以对我目前的理解水平有所帮助)。

除了直接将数据抓取代码放在每个门户组件中之外,如何在动态创建门户之前将数据动态传递给门户组件??我在哪里可以找到更多信息:PortalComponent "context" 或 EmbeddedViewRef,如果它们中的任何一个是我需要的?

我不得不实现一次动态组件(我不知道你是否遇到了和我一样的问题),我发现这个包对我来说是最好的。看看:

https://www.npmjs.com/package/ng-dynamic-component

使用这个库,您可以像这样绑定数据:

<ndc-dynamic
  [ndcDynamicComponent]="component"
  [ndcDynamicInputs]="inputs"
  [ndcDynamicOutputs]="outputs"
></ndc-dynamic>