Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 其他服务中的注入服务出现故障2_Angular_Typescript_Angular2 Services - Fatal编程技术网

Angular 其他服务中的注入服务出现故障2

Angular 其他服务中的注入服务出现故障2,angular,typescript,angular2-services,Angular,Typescript,Angular2 Services,我在另一个服务中注入服务时遇到问题。 我使用handleError方法获得了一个ContactService来从服务器获取数据。 我得到了一个AlertService来抛出handleError方法的错误。 我已经在我的核心模块中声明了contactService和AlertService。 但是当我调用alertService.submitNewMessage时,它显示this.alertService是未定义的。 请帮忙 @Injectable() export class AlertSer

我在另一个服务中注入服务时遇到问题。 我使用handleError方法获得了一个ContactService来从服务器获取数据。 我得到了一个AlertService来抛出handleError方法的错误。 我已经在我的核心模块中声明了contactService和AlertService。 但是当我调用alertService.submitNewMessage时,它显示this.alertService是未定义的。 请帮忙

@Injectable()
export class AlertService {
  private $currentMessages: BehaviorSubject<string> = new BehaviorSubject('');
  public currentMessages: Observable<string> = this.$currentMessages.asObservable();
  constructor() { }

  submitNewMessage(msg: string): void {
    this.$currentMessages.next(msg);
  }

}

我怀疑的问题与此有关

return this.http.get(this.contactsUrl)
                .map(this.extractData)
                .catch(this.handleError);
这将类方法注册为回调,这是不正确的,因为
This
不会正确绑定

您可以通过将这些函数包装在箭头函数中来解决此问题,这样当到达内部代码时,
仍将引用服务,而不是回调函数:

return this.http.get(data => this.contactsUrl(data))
                .map(data => this.extractData(data))
                .catch(data => this.handleError(data));

alertService.submitNewMessage的代码在哪里?@Sajeetharan抱歉,我的错误,我会修复它。您的contactservice没有用@InjectableI修饰,就像您的评论一样,但仍然显示消息:eError:无法读取undefinedHey的属性“submitNewMessage”,伙计。谢谢你的帮助。在多次重建后,“此”上下文已修复
return this.http.get(this.contactsUrl)
                .map(this.extractData)
                .catch(this.handleError);
return this.http.get(data => this.contactsUrl(data))
                .map(data => this.extractData(data))
                .catch(data => this.handleError(data));