2016-08-19 20 views
8

Tôi đang sử dụng góc 2 và RxJS, và tôi tự hỏi làm thế nào tôi có thể làm như sau:Làm cách nào để tôi có thể kiểm soát giá trị của một quan sát?

Trong thành phần của tôi, tôi đã xác định như sau:

count: Observable<number>;

Trong constructor thành phần của tôi, tôi đang thực hiện như sau:

constructor(
    private store: Store<any> 
) { 
    this.count = this.store.select<any>(state => state.count); 
    } 

Làm cách nào để xem giá trị hiện tại cho số lượng? Ngay bây giờ nếu tôi console.log(this.count) tôi nhận được một đối tượng lớn để đăng nhập. Nếu tôi muốn chỉ xem giá trị cho this.count, tôi có thể làm như thế nào?

Trả lời

9

Với một quan sát thường xuyên bạn chỉ nhận được giá trị khi nó thay đổi, vì vậy nếu bạn muốn console.log ra giá trị mà bạn sẽ cần phải console.log nó trong đăng ký:

constructor(
    private store: Store<any> 
) { 
    this.count = this.store.select<any>(state => state.count); 
    this.count.subscribe(res => console.log(res)); 
    } 

Tuy nhiên nếu bạn mong muốn có thể nhận giá trị hiện tại bất cứ lúc nào bạn muốn là một BehaviorSubject (kết hợp một Observable và Observer trong hàm ... import nó từ thư viện rxjs như bạn quan sát).

private count:BehaviorSubject<number> = new BehaviorSubject<number>(0); 

constructor(
    private store: Store<any> 
) { 
    let self = this; 
    self.store.select<any>(state => self.count.next(state.count)); 
    } 

Sau đó, bất cứ lúc nào bạn muốn nhận được giá trị hiện tại của số bạn sẽ gọi this.count.getValue() để thay đổi giá trị mà bạn sẽ gọi this.count.next(<the value you want to pass in>). Điều đó sẽ giúp bạn có được những gì bạn đang tìm kiếm.

+1

cảm ơn tôi sẽ dùng thử! – user1354934

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