Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
TypeError: no se pueden leer las propiedades de undefined

Trabajando en Angular 12 y experimentando un error cuando intento llamar a un método dentro de otro método. Aquí hay una abstracción de lo que estoy tratando (en TypeScript como estoy en Angular

 export class SomeClass { testvariable onTaskCompleted(results) { if (!results) { return; } else { //The line below works console.log(results); //The line below throws and error this.drawSomething(results) //In fact any reference to something outside of this function throws an error this.testvariable = results } } //The unique thing about OnTaskCompleted is that it is also used as a callback handler by a 3rd party library which is throwing the error //It is called in another function like so. It is producing the correct result in onTaskCompleted, but breaks when I do something like above this.something.onResults(this.onResults); drawSomething(results) { if (!results) { return; } else { //perform some work } } } }

Cuando ejecuto esto, obtengo un TypeError: No se pueden leer las propiedades de undefined. Si incluyo la función doSomethingElse en cualquiera de las otras funciones definidas en mi clase, no tengo ningún problema y funciona como se esperaba. La única otra cosa a tener en cuenta es que la función en la que tengo este problema doSomething () se usa como una devolución de llamada de una biblioteca externa y eso parece ser lo que arroja el error cada vez que incluyo cualquier referencia a algo 'fuera' de hacerAlgo en la función hacerAlgo. Cualquier pensamiento sería apreciado

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

la función en la que tengo este problema doSomething() se usa como una devolución de llamada

Lo más probable es que esté pasando la función de esta manera:

 library.externalFunction(this.doSomething);

Lo cual es un problema porque this parámetro se establece en la persona que llama, es decir, ya no será la instancia de la clase. Si doSomething() intenta acceder a una propiedad en this , será un error.

Una forma correcta de escribir esto sería:

 library.externalFunction(param => this.doSomething(param));

Las funciones de flecha capturan this y se comportan más como se espera que se comporten.

Alternativamente, uno podría vincular explícitamente this en la función:

 library.externalFunction(this.doSomething.bind(this));

Aquí hay bastantes respuestas que explican el alcance de la función, por ejemplo, https://stackoverflow.com/a/20279485

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda