【问题标题】:Can your return Angular Components based on a parameter您可以根据参数返回 Angular 组件吗
【发布时间】:2020-05-23 22:17:21
【问题描述】:

我想知道在 Angular 中是否可以进行以下操作。

我希望有几个组件采用相同的基本属性接口,一个字符串组件、一个日期组件、一个整数组件等,它们都具有不同的 html、css、验证等。

然后我想要一个名为 input 的组件,它将被放置在一个表单上,并根据给它的类的类型来呈现正确的组件。

如果不走将基础组件中的所有组件都包装在 ngIf 中并且不使用动态声明的路线,这是否可能?

【问题讨论】:

  • 你可以做到,只需要一个组件作为 input-controls.component.html 来定义所有需要的输入、选择、文本框、复选框、单选按钮,例如来自父组件从 home.component.html 您可以使用 (input)='control name' 将数据发送到 input-control.component.html 并在 input-control.component.html 中捕获输入并在 input-control 中有一些 *ngIf。 component.html 基于它显示控件并执行其余逻辑
  • 我已经有了这种安排,如果可能的话,我希望有一个更好的方法来使用 ngIfs 并且能够添加额外的控件而无需编辑基本组件布局。

标签: angular components


【解决方案1】:

您可以按照本文所述创建动态加载组件:https://medium.com/angular-in-depth/dynamically-loading-components-with-angular-cli-92a3c69bcd28

一般来说,您需要创建一个动态组件,该组件使用角核心的“Comiler”对象来创建您想要在某个时间创建的组件。 通过这样做,您不必使用那么多 *ngIf 语句。

在这个 stackblitz 中,我使用该功能创建动态字体真棒图标,您可以使用该功能创建自己的组件:https://stackblitz.com/edit/dynamic-module-with-fontawesome-z6zq2h

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多