【问题标题】:How to use async subject in angular2?如何在angular2中使用异步主题?
【发布时间】:2016-04-04 05:51:34
【问题描述】:

嗨,我有一个简单的组件和一个服务。当用户单击提交按钮时,我正在调用一个服务,其中异步主题向其所有订阅者发出一个值。我已经使用主题完成了它,它工作正常,但我想做它使用异步主题。我在这里做了一个演示http://plnkr.co/edit/tHjPVZ5NurJRWdCM9lbt?p=preview ...这是我的服务...

export class ErrorService{
  latestError:AsyncSubject<>=new AsyncSubject();

  error(){
    this.latestError.next('form submitted');
  }
}

这是我订阅异步主题的组件类

export class AppComponent { 
  result:any;
  constructor(private service:ErrorService){
    this.service.latestError.subscribe(err=> this.result=err);
  }

  onSubmit() { 
    this.service.error();
  }
}

但这是抛出错误...我不知道我在哪里做错了...请有人帮我纠正这个错误并告诉我如何使用异步主题并向其订阅者发出值

【问题讨论】:

    标签: angular rxjs5


    【解决方案1】:

    您需要以这种方式包含该类:

    import {AsyncSubject} from 'rxjs/subject/AsyncSubject';
    
    @Injectable()
    export class ErrorService{
      latestError:AsyncSubject<>=new AsyncSubject();
      error(){
        this.latestError.next('form submitted');
      }
    }
    

    看到这个 plunkr:http://plnkr.co/edit/SAl4YVXKRWpS7OeTYMrd?p=preview

    【讨论】:

    • 这是import {AsyncSubject} from 'rxjs/subject/AsyncSubject'; 任何预定义的类/导入吗?
    • 但是当在我的服务类中调用 .next() 时,它会发出一个值。我已经在我的构造函数中订阅了异步主题......但我没有得到由发出的值异步主题
    • @PardeepJain 也可以从 rxjs/Rx 模块导入:import {AsyncSubject} from 'rxjs/Rx';
    • @abhilashreddy 您还需要在主题上调用complete 方法来接收您的事件。我更新了我的 plunkr...plnkr.co/edit/SAl4YVXKRWpS7OeTYMrd?p=preview
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2016-06-24
    • 2017-01-17
    相关资源
    最近更新 更多