使用“发布”和“连接”创建Hot observable时出现Angular 2错误

时间:2016-04-19 15:11:28

标签: angular rxjs

我正在尝试以角度2创建Hot observable(RxJS API) 类似于http://jsbin.com/fewotud/3/edit?js,console

中的工作示例

所以当我使用"发布"调试器一直告诉我发布功能是未定义的 所以我的问题如何在Angular 2中使用Publish?我错过了添加任何图书馆吗? 这是我的代码:

//our root app component
import {Component} from 'angular2/core';
import {Observable} from 'rxjs/Observable';

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2> 
      <table><tr *ngFor="#itm of values"><td>{{itm}}</td></tr></table>
    </div>
  `,
  directives: []
})
export class App {
  tasks:Observable<Array<number>>;
  constructor() {
    this.values=[];

    let tasks=new Observable(observer =>
    {
      observer.next(1);
      observer.next(2);
      observer.next(3);

    } ).publish();
    tasks.connect()

    let subscription= this.tasks.subscribe(
      value => this.values.push(value+5),error => this.error='error !',
      () => this.finished = 'completed !'
      ); 
    ) 
    this.name = 'Angular2';




  }

}

这是我在plnkr中的完整版本: https://plnkr.co/edit/DFT8AWmAiKAO2CvjrUWn?p=preview

1 个答案:

答案 0 :(得分:2)

你需要使用类似的东西来包含它:

import {Observable} from 'rxjs/Rx';

import 'rxjs/add/operator/publish';

我也在你的代码中看到了一些拼写错误:

let subscription= tasks.subscribe( // <-------
  value => this.values.push(value+5),error => this.error='error !',
  () => this.finished = 'completed !'
  ); 
)

您需要在订阅后调用connect方法...

请参阅此plunkr:https://plnkr.co/edit/ESA5RZ4Ce7jz485CIcIy?p=preview