Tengo una propiedad en un objeto en un servicio Angular que está vinculado a un campo de texto en el html de un componente.
Cuando el servicio actualiza la propiedad, el nuevo valor no se muestra en el elemento html hasta que hago clic en el elemento.
No puedo entender por qué el nuevo valor no se muestra inmediatamente en el campo de texto sin tener que hacer clic en el elemento para obtener el nuevo valor.
El mensaje de console.log en la función de actualización muestra que el objeto se actualizó correctamente, solo que los datos no llegan al campo de formulario hasta que se hace clic en el elemento.
El código está abajo:
padre.componente.html
<input [(ngModel)]="service.serviceObj.data" type="text" />servicio.servicio.ts
public serviceObj = {} as any; ... updateObj() { this.serviceObj.data = 'new value'; console.log('this.serviceObj = ', this.serviceObj); } ...Su entrada hace referencia a:
service.selectedMarker.data
Pero su configuración:
this.serviceObj.data = 'new value'
serviceObj frente a selectedMarker. ¿Querías hacer esto?
<input [(ngModel)]="service.serviceObj.data" type="text" />
siempre puedes hacer una copia del objeto así:
const obj= JSON.parse(JSON.stringify(<objToCopy>));luego haga la mutación en el obj y asigne la propiedad de servicio a la copia mutada obj ("this.yourObj = obj")