Angular 动态形式可观察输入属性始终为空

标签 angular typescript rxjs

我正在自学 Angular 中的响应式(Reactive)形式,并且陷入了遵循 Dynamic Forms guide 的困境。 .

question.service.ts 文件中,我向返回的可观察量添加了延迟以模拟 HTTP 请求:

return of(questions.sort((a, b) => a.order - b.order)).pipe(delay(10));

此可观察量被传递到 app-root 模板中的 app-dynamic-form 组件:

<app-dynamic-form [questions]="questions$ | async"></app-dynamic-form>

但是questions输入属性值似乎始终为空。

ERROR TypeError: Cannot read property 'forEach' of null at QuestionControlService.toFormGroup (question-control.service.ts:19) at DynamicFormComponent.ngOnInit (dynamic-form.component.ts:22)

删除 .pipe(delay(10)) 会使示例恢复到工作状态。

任何人都可以解释为什么questions 输入属性为空吗?

参见StackBlitz用于工作示例。

最佳答案

您收到错误,因为输入属性绑定(bind)是异步发生的。

试试这个:

    <div>
        <ng-container *ngIf="questions$ | async as questions">
         <app-dynamic-form [questions]="questions"></app-dynamic-form>
        </ng-container>
    </div>

关于 Angular 动态形式可观察输入属性始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61030611/

相关文章:

angular - 扩展 Angular 4 通用渲染器

Angular SVG 图标不适用于 Angular Universal 项目延迟加载模块

javascript - 类型错误 : Cannot read property 'tigerStart' of undefined

angular - 如何在不创建新指令的情况下向模板驱动表单添加自定义验证(最大字符数)

javascript - tap() 内部的 Observable 完成

angular - 如何在 RxJS 订阅方法中等待

reactjs - 返回 React 组件的 Promise 的 Typescript 类型声明

typescript :泛型,用泛型(更高种类的类型)扩展类型

javascript - 环境变量 typescript

javascript - 在 Angular 中链接可观察订阅的最佳方式?