微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法第二次致电角度服务

如何解决无法第二次致电角度服务

我试图在单击有角度的按钮时调用服务功能。我不会以正确的方式做。第一次单击该按钮时,我能够调用该服务并检索值,这将引发以下错误。 [这是错误]

core.js:4197 ERROR TypeError: this._posterService.getPosterUrl is not a function
    at HomeComponent.downloadFile (home.component.ts:63)
    at HomeComponent_div_31_Template_a_click_9_listener (home.component.html:56)
    at executeListenerWithErrorHandling (core.js:14316)
    at wrapListenerIn_markDirtyAndPreventDefault (core.js:14351)
    at HTMLAnchorElement.<anonymous> (platform-browser.js:582)
    at ZoneDelegate.invokeTask (zone-evergreen.js:399)
    at Object.onInvokeTask (core.js:27425)
    at ZoneDelegate.invokeTask (zone-evergreen.js:398)
    at Zone.runTask (zone-evergreen.js:167)
    at ZoneTask.invokeTask [as invoke] (zone-evergreen.js:480)

这是我的代码

 <a (click)="downloadFile(product._id)" class="genric-btn primary" style="color: aliceblue;">Download</a>
downloadFile(value:any):void{
    this.subs = this._posterService.getPosterUrl(value).subscribe(res => {
      this._posterService = res;
      console.log(res)
       this.DownloadUrl = "assets/img/test.pdf"
       let link = document.createElement("a");
       link.download = "filename";
       link.href = this.DownloadUrl;
       link.click(); 
       });
    }

在这里订阅该服务。当我单击按钮时,调用功能并将ID传递给函数

public getPosterUrl=(posterId:string):Observable<any> =>{
    return this._http.get('http://localhost:3000/api/posters/'+posterId);
  }

我能够收到对该服务的第一个请求。当我第二次尝试单击按钮时。错误被抛出。

解决方法

您使用的语法不正确,公共getPosterUrl后应该没有=符号
应该是

public getPosterUrl(posterId:string):Observable<any> => {    
    return this._http.get('http://localhost:3000/api/posters/'+posterId);    
}
,

使用此:

this._posterService = res;

您正在丢失由angular注入的服务实例。因此,您只能运行一次service函数,只需删除该行,或尝试解释您尝试使用该函数实现替代解决方案的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。