2016-06-13 3 views
2

Я создаю приложение angular2, и у меня есть служба, которую я хочу написать в одном компоненте, а затем читать/обновлять ее в другом компоненты (маршруты).Свойство 'onNext' не существует в типе 'BehaviorSubject <Filer>'

Вот что моя служба выглядит в настоящее время:

import { Injectable } from '@angular/core'; 
import { Filer } from './filer.model'; 
import { Observable } from 'rxjs/Observable'; 
import { Subject } from 'rxjs/Subject'; 

@Injectable() 
export class FilerService { 
    public _filer: Subject<Filer>; 

    constructor() { 
    this._filer = new Subject(); 
    } 

    setSelected(ret: Filer) { 
    let temp = ret; 
    this._filer.next(temp); 
    } 

    get selected(): Observable<Filer> { 
    return this._filer.asObservable(); 
    } 

} 

, поскольку я использую Subject, только те компоненты, которые подписывались смогут увидеть любые значения. Я попытался изменить его на BehaviorSubject, основанный на документах rxjs. Вот как это выглядит:

import { Injectable } from '@angular/core'; 
import { Filer } from './filer.model'; 
import { Observable } from 'rxjs/Observable'; 
import { Observer } from 'rxjs/Observer'; 
import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 

@Injectable() 
export class FilerService { 
    public _filer: BehaviorSubject<Filer>; 

    constructor() { 
    this._filer = new BehaviorSubject({}); 
    } 

    setSelected(ret: Filer) { 
    let temp = ret; 
    this._filer.onNext(temp); 
    } 

    get selected(): Observable<Filer> { 
    return this._filer.asObservable(); 
    } 

} 

Однако я получаю Property 'onNext' does not exist on type 'BehaviorSubject<Filer>'., так что я не знаю, куда идти отсюда. Есть идеи?

Я нахожусь на rxjs 5.0.0-beta.6.

+7

это, вероятно, называется 'next' вместо' onNext', если вы используете rxjs 5 – user3743222

ответ

10

Если вы используете последний угловой2, тогда он использует rxjs 5, и в этом случае вы должны использовать next(), а не onNext().

Посмотрите на migration guide.

Смежные вопросы