这个问题已经困扰了我几个星期了。我键入了通过http请求返回的可观察数组。这会将数组输出到控制台。我试图抓住每个项目并检查properties._hg_layer。
然后将ngrx状态选择器分配给Observable,然后传递给BehaviorSubject。这会发出数组,但不会让我得出数组内部的值。我尝试了每种可能的运算符组合。我无法确定我的问题是否与如何从服务中键入响应或我如何使用运算符有关。它不会让我访问数组的类型化成员。好像不知道数组对象的属性一样。
我尝试在订阅上分配对象的类型,但我也无法使它正常工作。
我们将不胜感激您提供的任何见解或帮助。非常感谢。
答案 0 :(得分:1)
尝试一下:
this.featureSource.subscribe((features) => {
// iterate here
features.map((feature) => console.log(feature.properties));
// or good ol'
for (const feature of features) {
console.log(feature.properties);
}
})
此外,请记住您的take(2)
will actually emit the features independently而不是数组。如果要继续使用该代码,则需要更改上面的代码片段以处理该项目(本质上就是按照您在地图中要做的事情进行操作)。
答案 1 :(得分:0)
最后,它获得了正确的映射顺序。我必须在初始map()中映射数组。然后将各个对象映射到订阅上。我通过以下方法解决了我的问题:
this.updatedLayers$.pipe(
map((features: Feature[]) => features),
)
.subscribe(val => {
setTimeout(() => {
featureSubject.next(val.length);
this.featureSource.next(val);
console.log('feature data', val);
val.map(feature => {
console.log('type', feature.type);
console.log('properties', feature.properties._hg_layer);
});
}, 500);
});