Angular-无法在委托函数中设置undefined的属性

问题描述

我通过一种执行两种功能的通用方法调用服务,一种执行成功,另一种执行失败。该调用已正确执行,但是在成功函数中,我有一个要分配给服务结果值的变量,但是发生的是,它生成错误“无法设置未定义的属性'resultService'”。在下面,我添加了我正在使用的代码

CallWS.Service.ts

<!DOCTYPE html>
<html>
    <head>
        <title>Uribe2020</title>
        <Meta name="viewport" content="width=device-width,initial-scale=1">
        <link rel="stylesheet" href="homeStyles.css">
    </head>
    <body>
        <!--HEADER-->
        <header> 
            <img class="logo" src="Enlightened Trans BKG.png" alt="logo" height="30px">
            <nav>
                <ul class="nav__links">
                    <li><a href="#">About</a></li>
                    <li><a href="#">Policy</a></li>
                    <li><a href="#">Donate</a></li>
                </ul>
            </nav>
            <a class="cta" href="#"><button>Contact</button></a>
        </header>
        <div class="spacer"></div> 
        <!--BODY-ANNOUNCEMENT-->
        <div class="announcement">
               Donate to Uribe2020 here >
        </div>
        <!--BODY-SCROLL VIEW-->
        <div class="intro">
            <h1 class="URIBE2020">URIBE2020</h1>
            <h1 class="RejectB"><i>Reject bureaucracy,<br>embrace modernity</i></h1>
            <video src="Video.mp4"></video>
        </div>
        
        <section>
            <h1 class="RejectB">
                <i>Da Bottom TXT</i>
            </h1>
        </section>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js" 
        integrity="sha512-HzAEuXwhLxwm/Jj+5ecdjzrRVrjuh2ZeIxyT1Ln37TO5pWNMnKBuU7cfd1wvRQ/k86w1oC174Yk1T7aRlBpIcA==" 
        crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/animation.gsap.js" 
        integrity="sha512-jlbgjhSLRQsQc/bits6lHjywF3n/NLO3Sz1rwa9gsUnCOi0f0lD/yAul75UNOzIiDg35zaJJ3BKT3zo6+i9lQA==" 
        crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addindicators.js" 
        integrity="sha512-vWutwDjKJo+VMAA7irs/ICTmVYXRMdqtXA27MSuPxGjkbYnKeUKPrIpfsAwIXCzaSDF/qRy/L85ko/yxW0AIiA==" 
        crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js" 
        integrity="sha512-DkPsH9LzNzZaZjCszwKrooKwgjArjdiEjA5tTgr3YX4E6TYv93ICS8T41yFHJnnSmGpnf0Mvb5NhScYbwvhn2w==" 
        crossorigin="anonymous"></script>
        <script src="app.js"></script>

        <!--BODY-ABOUT-->
        <div class="about">
            SUPPORT<br>
            DIEGO URIBE<br>
            FOR<br>
            PRESIDENT<br><br>
            <i>Reject bureaucracy,<br>
            embrace modernity</i>       
        </div>
        <div class="donate">
            CLICK TO DONATE<br>
            <a href="https://forms.gle/5vZ3opEifYLeB5bz5">$50</a><br>
            <a href="https://forms.gle/J17FYSvmtxLt8aFy5">$100</a><br>
            <a href="https://forms.gle/ZMfLo7MU7fvo4SrV6">$500</a><br>
            <a href="https://forms.gle/kfmt2pAqp9se7SCC7">$1000</a><br>
            <a href="https://forms.gle/Eu62ZGxKMiGQPQq76">$1500</a><br>
            <a href="https://forms.gle/LqWDrDy6a1Kt12UC6">$2000</a><br>
            <a href="https://forms.gle/L7pbqbEPc48bP7Zy5">$2800</a><br>            
        </div>
        <div class="policies">
            
        </div>
        <div>
            <canvas id="hero-section"></canvas>
        </div>



    </body>
</html>

AppComponent.ts

export class CallWSService {
  constructor(private http: HttpClient) { }

  callgetmethodExample(urlService: string,responseFunc: (responseParam: any) => any,doInError?: (outService: any) => any) {
    return this.http.get(urlService).subscribe(
      data => (responseFunc(data)),error => (doInError(error))
    )
  }
}

发生的错误是,当尝试分配resultService变量的值时,它会产生以下错误,我不明白为什么会发生这种情况

Error generate

似乎无法识别该变量,并且会生成错误

解决方法

问题是典型的js问题-上下文丢失。要修复它,请使用箭头功能:

this.invokeService.callGetMethodExample(url,result => this.responseFunc(result));

使用这段代码responseFunc不会失去上下文