Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 错误:InvalidPipeArgument:“[object]”ngrx异步管道_Angular_Asynchronous_Rxjs_Observable_Ngrx - Fatal编程技术网

Angular 错误:InvalidPipeArgument:“[object]”ngrx异步管道

Angular 错误:InvalidPipeArgument:“[object]”ngrx异步管道,angular,asynchronous,rxjs,observable,ngrx,Angular,Asynchronous,Rxjs,Observable,Ngrx,我的主应用程序组件调度一个操作,从API获取数据并将其加载到属性配置中的存储中,然后当页面加载时,我的表单组件从存储中选择配置,并将其绑定到子组件,然后使用异步管道显示它。我看过的其他帖子说,问题是这个值不是可观察的,但我知道我的值是可观察的,因为我已经订阅了它,并且可以记录对象数组。我就是不能让它通过异步管道 配置中的数据对象是satOptions satOptions[]的数组 父母恩戈尼尼特 this.config$ = this.store.select((state:any) =>

我的主应用程序组件调度一个操作,从API获取数据并将其加载到属性配置中的存储中,然后当页面加载时,我的表单组件从存储中选择配置,并将其绑定到子组件,然后使用异步管道显示它。我看过的其他帖子说,问题是这个值不是可观察的,但我知道我的值是可观察的,因为我已经订阅了它,并且可以记录对象数组。我就是不能让它通过异步管道

配置中的数据对象是satOptions satOptions[]的数组

父母恩戈尼尼特

this.config$ = this.store.select((state:any) => state.appReducer.config)
this.config$.subscribe(slice => console.log(slice))
子模板

<select [formControl]="satControl">
    <option
        class="hide-select"
        value="default"
        disabled
    >
        pick a satellite
    </option>
    <option
        *ngFor="let sat of (config$ | async)"
        [value]="sat.channels"
        [attr.set]="sat"
    >
        {{ sat.satelliteName }}
    </option>
</select>
attr.set绑定显示[对象]


我真是不知所措,我尝试过订阅和重新分配,结果都是一样的。我做错了什么?

在不知道完整代码的情况下,我假设您正在向子模板传递一个数组而不是一个可观察的数组,这意味着您不再需要使用异步管道

家长:

<my-child [items]="items | async"></my-child>
儿童:

<li *ngFor="let item of items">{{ item.name }}</li>

商店的呼叫不总是异步的吗?我尝试不使用管道,错误消失了,但是数据属性仍然显示[object object]Yea,如果您从存储中选择它,它始终是可观察的。data attr无法显示javascript对象,因此[object object]。如果你真的想向对象显示,你必须将其JSON.stringify。这很奇怪,我有另一个项目,它像这样从存储中流式传输数据,效果很好。我也见过很多其他人这样做。是因为我在应用程序中调度了操作,然后在以后从另一个组件中选择了数据吗?问题是,它是可观察的类型,我已经证实了这一点。那么,你能在你的回答中解释为什么在子选择器上使用| async进行绑定有效,但在子html模板中不起作用吗?你以前是怎么做的?您是否在这两个组件中都使用了异步管道?因为如果只在它工作时执行,那么在父组件或子组件中执行它并不重要。我建议让你的子组件尽可能简单,这意味着你把你的项目作为一个数组而不是一个可观察的。
<my-child [items]="items | async"></my-child>
<li *ngFor="let item of items">{{ item.name }}</li>