观测值,数组和过滤

时间:2019-06-06 12:45:36

标签: arrays angular rxjs observable angular-filters

使用angular 8,rxjs 6.5.2

我有一个http调用,它返回一个可观察到的

{
  'A': {name: 'A', type:'1'},
  'B': {name: 'B', type:'2'},
  'C': {name: 'C', type:'2'}
}

我将此通话存储在data$

我想以角形式显示所有类型“ 2”。我知道要将对象转换成数组,可以使用Object.values(data)

那么我如何将可观察对象转换为可以过滤并更改回可观察对象的数组?

我已经尝试过此代码

    this.myService.getPeople().subscribe(data => {
        const items = Object.values(data).filter(
            (item: any) => item && item.type === '2'
        );

        this.data$ = of(items);
    });

但是表格永远不会更新或刷新

我缺少明显的东西吗?

2 个答案:

答案 0 :(得分:1)

您将需要使用地图运算符。

out_dict

答案 1 :(得分:1)

我假设您的组件使用ChangeDetectionStrategy.OnPush。

在这种情况下,您需要在组件的构造函数参数中添加一个ChangeDetectorRef:

$("#grid").data("kendoGrid").dataItem("tbody tr.k-grid-edit-row").columnName;

然后将您的数据获取功能更改为此:

     services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
            builder => builder.WithOrigins("localhost").AllowAnyOrigin()
                              .AllowAnyMethod()
                              .AllowAnyHeader()
                              .AllowCredentials());
            });
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseCors("CorsPolicy");
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();

            app.UseAuthentication();

        }