javascript - 无法将 Observable 返回的对象作为输入组件 Angular 5 传递

标签 javascript angular typescript

我有一个只有一个输入的小组件

ts组件代码

 @Input() variables;

      ngOnInit() {
        console.log(this.variables);
    }
   

我在哪里使用我的组件 TS

envVars$: Observable<{
            names: String[],
            values: {}
          }>;

我在哪里使用我的组件 HTML

 <app-code  [variables]="(envVars$ | async)?.values | json"></app-code>
 

在控制台日志中我有 NULL 尽管我的对象已满

最佳答案

日志显示为空,因为您在异步定义对象之前登录 INIT。异步管道完全按预期工作。如果您需要在 init 上定义对象,那么您需要稍微更改您的结构。

改为执行此操作以确保在组件实例化之前填充可观察对象:

<app-code *ngIf="envVars$ | async as enVars" [variables]="envVars.values | json"></app-code>

这里的 ngIf 告诉 Angular 在 envVars$ 发出一个值之前不要实例化组件。

关于javascript - 无法将 Observable 返回的对象作为输入组件 Angular 5 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344458/

相关文章:

javascript - Bokeh:在 DataTable 小部件中显示本地文件

javascript - Rails 应用程序找不到我的 Gem 的 javascript

angular - 在可观察值的初始加载期间未加载的值

javascript - 如何将数据从 JSON API 传递到 TypeScript 模型

reactjs - typescript 错误不允许作为变量声明 name.ts

html - 在 Angular 组件模板中使用 'this' 关键字

javascript - jQuery 可以从字符串变量中的 HTML 标记获取属性吗

javascript - 如何在 pug 中使用通过 id 获取元素

angular - 在不使用::ng-deep、/deep/或 >>> 组合器的情况下设置第三方组件样式的正确方法是什么?

javascript - 为什么 .subscribe() 中的数据首先返回一个空对象,然后再用数据填充该对象?