2016-11-05 18 views
5

tôi có thể tạo ra một quan sát ở phần góc của tôi ở dưới đây đề cập cáchLàm thế nào để tạo chủ đề RxJS trong Angular 2?

... 
... 
import { Observable } from 'rxjs/Observable'; 
.. 
... 
let observable = new Observable(function subscribe(observer) { 
     observer.next(1); 
     observer.next(2); 
     observer.next(3); 
     observer.next(4); 
     setTimeout(() => {observer.next(5); },9000); 
    }); 

Nhưng tôi không biết làm thế nào để tạo ra một chủ đề, có thể một số một cung cấp một ví dụ cho giống nhau không?

Trả lời

2

Sử dụng Rx.Subject với góc nó không khác nhau từ việc sử dụng nó mà không góc, nguyên tắc chính là như nhau, nhìn vào ví dụ dưới đây

const subject = new Rx.Subject(); 
const subscription = subject.subscribe(
    (data) => console.log(data), 
    (err) => console.log(err), 
() => console.log('Completed') 
); 

subject.next(1); 
subject.next(2); 
subject.next(3); 
subject.complete(); 
<script src="https://unpkg.com/@reactivex/[email protected]/dist/global/Rx.umd.js"></script> 

Bạn cần phải thực hiện ví dụ mới Rx.Subject, sau đó đăng ký với nơi bạn cần và kích hoạt sự kiện.

10

Dưới đây là một plunker: http://plnkr.co/edit/jLtFLjWrvHGI0ZPHl10B?p=preview

import {Subject} from 'rxjs/Subject'; 

@Injectable() 
export class MyService { 

    public invokeEvent:Subject<any> = new Subject(); 

    constructor() {} 
} 

đăng ký với nó như một quan sát được:

constructor(private _myService: MyService) { 
     this._myService.invokeEvent.subscribe((value) => { 
      console.log(value); 
     }); 
     } 

và đẩy giá trị cho nó giống như một quan sát một lần nữa với tới

ngAfterViewInit(){ 
     this._myService.invokeEvent.next(1); 
    } 
+0

Tôi tự hỏi nếu Tôi thực sự cần cả lớp chỉ để đặt 'Injectable' lên trên' Subject'. Có lẽ chúng ta có thể đẩy một đối tượng trần của Subject vào mảng 'provider'? – Gherman

+0

@Gherman điều bạn thường đặt đối tượng trong một dịch vụ được chia sẻ, do đó bạn sẽ không phải tạo ra một tiêm cho tất cả chúng. Đây chỉ là một ví dụ. – echonax

+0

Điều đó xảy ra là dịch vụ được chia sẻ của tôi chỉ bao gồm một Hành vi và không có gì khác. Mọi thứ tôi cần đã được triển khai trong Hành vi. Vì vậy, nó có vẻ như chủ đề phải là một dịch vụ chia sẻ trên riêng của mình chứ không phải được đưa vào một. Tôi chỉ có một loạt các thành phần hoặc thay đổi trạng thái hoặc xem nó. – Gherman

Các vấn đề liên quan