Если вы намеренно вызываете оператор распространения, потому что это массив, попробуйте присвоить его значению свойства в определении литерала объекта.
{ key: c.payload.key, values: ...c.payload.val() }
Редактировать: основываясь на вашем комментарии, я бы все равно сказал, что просто присвойте массив координат (объекты пар свойств lat / lng) свойству values, чтобы выполнить итерацию позже. Я предполагаю, что метод .val () должен возвращать массив этих значений. В противном случае, пожалуйста, опубликуйте, что возвращает .val ().
Также я заметил кое-что еще, что вы должны проверить.
Наблюдаемое вызывает вызов метода Rx Js pipe () для сопоставления, но я не сделал не замечать подписку () в любом месте. В то время как .pipe () позволяет отображать и фильтровать обратный вызов, необходимо подписаться.
Редактировать # 2: На основании вашего второго комментария ниже. То, что вы просите, мне до сих пор неясно. Поэтому я дам еще два возможных ответа на основании комментария: «Хорошо, мой вопрос, как я могу получить массив напрямую?»
// Possibility #1
// Simplest is to store off the returned data into the coords variable for later processing.
// You can then get the array directly at any later point just by accessing the coords
this.db.list('Locations').snapshotChanges().subscribe((markers: any) => {
coords = markers;
});
// Possibility #2
// Since the data structure you are using works like a dictionary data structure
// Define some structures to store off the data and get at the array data directly later
// Define this somewhere outside your class
interface ICoordinate {
lat: string;
lng: string;
}
// Initialize coordinate dictionary
let coordinates: { [key: string] : ICoordinate[]; } = {};
// Retrieve locations and store off coordinates to get at the array data directly
this.db.list('Locations')
.snapshotChanges()
.subscribe((markers: any) => {
coordinates[markers.key] = ICoordinate[];
markers.forEach(singlemarker => {
coordinates[markers.key].push({ lat: singlemarker.text.lat, lng: singlemarker.text.lng });
});
});
Правка № 3: О да, я вижу. Массив необходимо инициализировать перед добавлением в него.
Обновленный код. Кроме того, в качестве дополнительной помощи по будущим вопросам очень полезно, если у вас есть фрагмент кода. ТАК вопрос, на который можно сослаться: Мне сказали создать «работоспособный» пример с «Фрагментами стека», как мне это сделать?
Надеюсь, это поможет.
Удачного кодирования!