如何解决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变量的值时,它会产生以下错误,我不明白为什么会发生这种情况
解决方法
问题是典型的js问题-上下文丢失。要修复它,请使用箭头功能:
this.invokeService.callGetMethodExample(url,result => this.responseFunc(result));
使用这段代码responseFunc
不会失去上下文
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。