Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!