ERROR TypeError: Cannot read properties of undefined (reading 'sele

Eurus

Estoy trabajando con ionic, angular y typescript haciendo una tabla con datos de una base de datos y estoy intentando crear la función para borrar de la base de datos, pero me da el error

Cannot read properties of undefined (reading 'selected')

el código que tengo es el siguiente:

selected: number = 0; <-- Aquí en teoría defino un valor a la variable.

onClick( item: any ) {
    console.log(item);
    this.selected = item.idstock; <-- Aquí le asigno el valor del id que quiero borrar.
    console.log(this.selected);  }

Aquí solamente llamo a la función de borrar y le envío el valor del id guardado en 'selected':

borrar() {
    console.log(this.selected);
    this.stockCtrl.borrarStock(this.selected)
}

La función de borrar es la siguiente:

borrarStock(post:number) {
    this.token = this.usuarioCtrl.token;

const headers = new HttpHeaders({
  'x-token':this.token,
  'x-iddelete':this.stockp.selected.toString()
});

headers.append('x-token',this.token);
headers.append('x-iddelete',this.stockp.selected.toString())
console.log(headers);

return this.http.post(`${URL}/api/stock/delete`,post,{headers}).subscribe(resp =>{console.log(resp)});}

Agradecería mucho si alguien puede ayudarme ya que llevo un buen rato estancado en este error, y la única solución que encuentro por internet es asignarle un valor, sin embargo está asignado un 0 por defecto.

Lolerpopler

Voy a ayudarte respondiendo a otra cosa que no preguntas per necesitas mas urgentemente.
SI quieres pedir ayuda deberias de empezar por poner que lenguaje estas utilizando. Y lo segundo proporcionar un codigo que pueda ser ejecutado y que resulte en el mismo error

Lafayette

Te diria que probases definiendo unicamente el selected: number; en la cabecera del .ts, y en el onInit() ( o lo que uses para inicializar la clase ) le enchufes algo del estilo "this.selected = 0"

Martita-

Tiene pinta de que el error lo tienes en item.idstock y le esta asignando un undefined, y cuando quieres usar this.selected, lo tienes en undefined.

Aunque sin ver el error completo que te pone en consola, ni idea.

Como recomendacion te diria que uses tipado y no el any, y que si no vas a usar el tipado uses item.['idstock'] en vez del item.idstock

eaglin

Seguro que no viene de aqui?
:this.stockp.selected.toString().

Te dice el error de que linea de código es?

1 respuesta
EnderFX
  'x-iddelete':this.stockp.selected.toString()

En ese punto, 'this.stockp' es undefined (si el código falla en lo que has pegado, tiene que ser ahí donde se produce el error, ya que el siguiente acceso a .selected es después de esa línea y ya habría petado antes).

Estás intentando acceder a la propiedad selected, y como es undefined ese acceso falla.
Necesitas manejar, en tu lógica, el caso en el que ese valor pueda ser undefined, o modificar tu código de forma que evites que eso pase. Podrías asignar un valor inicial, pero entiendo que no es lo que buscas, si no mostrar un error o hacer algo distinto si this.stockp * es undefined.

De todas formas, pega el código completo. Si todo el código es de la misma clase/objeto, entonces tendrías que usar this.selected y no this.stockp, ya que es lo que estás asignando. Pero necesitaríamos más contexto.

1 respuesta
Martita-

Leyendo a #5 y #6 y viendo el codigo con algo mas de detenimiento, creo que tienen razon, no habia visto el .selected ese ahi en el objeto this.stockp

Pero viendo como funciona #1, seguramente no se pasara a decir nada. En otro thread que abrio, hizo igual xD.

1 1 respuesta
AkA7

#7 Esos son los mejores xd

Usuarios habituales

  • AkA7
  • Martita-
  • EnderFX
  • eaglin
  • Lafayette
  • Lolerpopler
  • Eurus