Angular4-从RestAPI Jsondata为字段构建动态表单

Angular4-从RestAPI Jsondata为字段构建动态表单,angular,observable,dynamic-forms,Angular,Observable,Dynamic Forms,我正在使用以下教程构建一个FormBuilder应用程序 我能够使用该示例进行构建并将其添加到我的项目中。表单的数据来自httpClient。一旦我引入了可观测数据,那么传递给子组件的数据就不同步了 我试图将可观察的内容传递给孩子,类似于下面的模板 <div> <dynamic-form [fieldCfg]="fieldConfig|async" #form="dynamicForm" (submit)="submit($event)"> </dynamic-fo

我正在使用以下教程构建一个FormBuilder应用程序

我能够使用该示例进行构建并将其添加到我的项目中。表单的数据来自httpClient。一旦我引入了可观测数据,那么传递给子组件的数据就不同步了

我试图将可观察的内容传递给孩子,类似于下面的模板

<div>
<dynamic-form
[fieldCfg]="fieldConfig|async"
#form="dynamicForm"
(submit)="submit($event)">
</dynamic-form>
{{ form.valid }}
{{ form.value | json }}
</div>

{{form.valid}
{{form.value | json}}

其中,
fieldConfig
是可观察的。当我将它传递给我的子组件并在
ngOnChanges
上订阅它时,我得到一个错误:无法订阅
this.fieldConfig
。我对angular比较陌生,我想知道解决这种情况的最佳方法。

如果您使用
异步
管道,它会自动为您订阅。所以现在在字段
fieldCfg
中,你没有一个
可观察的
,而是
t
,所以它是
可观察的

Hi-SebOlens的结果,那么将fieldCfg作为一个数组本身更好吗?或者如何将fieldcfg设置为可观察的?推荐的方法是什么?非常感谢!使用管道总是更好的,因为它们针对angular的变化检测系统进行了优化,而且非常方便。因此,在这种情况下,最好还是坚持使用管道。如果
fieldConfig
的类型是
Observable
,其中某个类型是您的Observable在订阅后返回的类型,那么动态表单组件中的“fieldCfg”应该是某个类型。您得到订阅错误是因为在您的孩子中fieldCfg不再是可见的。这是它的物化值感谢SebOlens,我能够使用来自父级的异步管道&直接将结果获取到我正在寻找的FieldConfig类型的数组。感谢您的快速响应,并清楚地解释了异步中发生的可观察事件。不客气。快乐编码:)别忘了对答案进行投票Hi SebOlens,试图对答案进行投票但不让我,看起来我的声誉不到15!