Esta es la clase de componente, por ejemplo:
export class AppComponent { categories = { country: [], author: [] } constructor(){} getOptions(options) { options.forEach(option => { const key = option.name; this.categories[key].push(option.value); }) } } Al hacer clic en un botón, estoy llamando a getOptions(options) desde un componente diferente. La estructura de opciones se ve así:
options = [ {name: 'country', value: 'Germany'}, {name: 'author', value: 'Franz Kafka'} ] Entonces ahora el valor de this.categories se actualizará, así que ahora:
this.categories[country] = ["Germany"] this.categories[author] = ["Frank Kafka"] El valor de options cambia cada vez que se hace clic en el botón. Cuando estoy enviando nuevas options de valor como:
options = [ {name: 'country', value: 'Japan'}, {name: 'author', value: 'Masashi Kishimoto'} ] El valor antiguo de this.categories[country] no se guarda por algún motivo. El nuevo valor para this.categories[country] debería ser ["Germany, "Japan"] pero obtengo solo ["Japan"] en la matriz.
No parece que el código esté bien, incluso lo intenté a través de Javascript. Lo que puedo sugerir es intentar verificar el valor real de options.value. Podría haber una posibilidad de que haya alguna entrada sin opciones de valor.
let categories = { country: [], author: [] } let options = [ {name: 'country'}, {name: 'author', value: 'Franz Kafka'}, {name: 'country', value: 'Japan'}, {name: 'author', value: 'Masashi Kishimoto'} ] options.forEach(option => { const key = option.name; console.log(key); if(option.value) categories[key].push(option.value); }) console.log(categories);