Home > OS >  TypeError: Cannot read properties of undefined (reading 'api_url')
TypeError: Cannot read properties of undefined (reading 'api_url')

Time:01-06

I am trying to validate whether the user exists via his email in order to reset password with AngularJS.

  
private api_url = AppSettings.API_ENDPOINT   'user-info/email_validate';

......



  async function sendRequest<T>(email:string):Promise<T>{
      // console.log(this.api_url);
      const res = await fetch (this.api_url, {
        method:"post",
        headers: {"Content-Type": "application/json"},
        body: JSON.stringify({
          email: email,
        })
      }).then((res) => {
        if(!res.ok){
          console.log("ERROR");
          return res;
        }
        return res;
      })

      return res.json();
    }

After trying this, my file outputs are:

ERROR Error: Uncaught (in promise): TypeError: Cannot read properties of undefined (reading 'api_url')

TypeError: Cannot read properties of undefined (reading 'api_url')

Don't know what to do.

CodePudding user response:

You can't get this in a typical function. You can use the arrow function to solve it.

class Demo {
  private api_url = `${AppSettings.API_ENDPOINT}user-info/email_validate`;

  // ....

  sendRequest = async <T>(email: string): Promise<T> => {
    // console.log(this.api_url);
    const res = await fetch(this.api_url, {
      body: JSON.stringify({
        email,
      }),
      headers: { 'Content-Type': 'application/json' },
      method: 'post',
    }).then((res) => {
      if (!res.ok) {
        console.log('ERROR');

        return res;
      }

      return res;
    });

    return res.json();
  };
}

For more information https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this#this_in_arrow_functions

  • Related