I have a simple if else code in TypeScript.But in some code unable to access it.It shows me the following error,
“Cannot read properties of undefined (reading ‘setNewsProvider’)”
Code
if (this.newsShow != null) { if (this.glbNews.nIds == null) { this.setNewsProvider(); //Accessible Here } else { if (this.newsShow.EmpLst == null) { this.setNewsProvider(); // Accessible Here } else { if (this.newsShow.LCL == "X300") { if (this.newsShow.MXD == "N300") { var prd1 = this.newsShow.ProducerChk; this.glbNews.PrdNcc.forEach(function (value) { if (value == prd1) { this.setNewsProvider(); //Un accessible here.. "Cannot read properties of undefined (reading 'setNewsProvider')" } }) } else { //Some code here }) } } } } }
Advertisement
Answer
Inside the forEach
loop you enter a function, the function has it’s own this value. To avoid the problem, JS programmers used to often write
const that = this;
at the entry point and then use that.setNewsProvider()
so that a more locally scoped this does not override it.
if you use an arrow function the problem will be avoided as these do not have their own local this value.
this.glbNews.PrdNcc.forEach((value) => { if (value == prd1) { this.setNewsProvider(); } })