加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 无法读取未定义的属性“next”

发布时间:2020-12-17 17:51:35 所属栏目:安全 来源:网络整理
导读:我正在订阅一个observable,以便我的服务中的subscribeToTasks()调用失败时,它最终会调用我的subscriptionError()方法中的代码,在这个例子中只是一个简单的警报.问题是,任何时候发生此调用错误并调用this.newSubscriptionFailure.next(),我在浏览器控制台中收
我正在订阅一个observable,以便我的服务中的subscribeToTasks()调用失败时,它最终会调用我的subscriptionError()方法中的代码,在这个例子中只是一个简单的警报.问题是,任何时候发生此调用错误并调用this.newSubscriptionFailure.next(),我在浏览器控制台中收到以下错误:

Cannot read property ‘next’ of undefined

当你可以清楚地看到newSubscriptionFailure被定义在方法之上时,newSubscriptionFailure是如何定义的?在api调用发生错误之前很久就会遇到该代码.我以前一直使用这种方法并且它一直有用,我能想到的唯一区别是我在服务中调用.next()(定义newSubscriptionFailure的文件相同),而我通常调用.next( )在一个单独的组件文件中.我究竟做错了什么?有没有办法让我的工作,或更好的方法采取?

我的服务代码:

import { Observable } from 'rxjs/Observable';
import { Subject }    from 'rxjs/Subject';

public subscribeToTasks(period: string,stripeToken: string): Observable<any> {        
    let body = JSON.stringify({ period,stripeToken });
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });        
    return this.authHttp.post(this.apiTasks,body,options).map(response => {
        return response.json();
    }).catch(this.newSubscriptionError);
}


newSubscriptionFailure = new Subject();
newSubscriptionFailure$= this.newSubscriptionFailure.asObservable();

public newSubscriptionError() {
    this.newSubscriptionFailure.next();
}

我的组件中的代码:

ngOnInit(): void {
    this.subscriptionError();
}

subscriptionError(){
    this.subscriptionsService.newSubscriptionFailure$.subscribe(() => {
        alert('call failed');
    });
}

解决方法

更改

}).catch(this.newSubscriptionError);

}).catch((e)=>this.newSubscriptionError());

要么

}).catch(this.newSubscriptionError.bind(this));

你的这个并不是指Injectable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读