从可观察主题推送/缩进值不会更新已订阅的可观察对象

时间:2017-01-05 04:00:29

标签: angular typescript ionic2 rxjs5

我已经把一个简单的例子放在一起,我认为应该可行..但它没有:( 我需要帮助理解我做错了什么。

@Component({
    templateUrl: 'sandbox.template.html'
})
export class SandBoxPage implements OnInit {

    dataSubject: Subject<string> = Subject.create();
    data$: Observable<string>;

    constructor(private platform: Platform) {
        this.data$ = this.dataSubject
            .asObservable()
            .startWith("First value in the observable");
    }

    onClick() {
        console.log("onClick()");
        this.dataSubject.next(Date.now + " value");
    }

    ngOnInit() {
        console.log("ngOnInit()");
        this.data$.subscribe((v) => {
            console.log("new value", v);
        }, (err) => {
            console.log("Error", err);
        });
    }
}

我有一个连接到onClick()的按钮,但我的订阅中的console.log不会触发。它只会在开始时使用startsWith值触发一次。

1 个答案:

答案 0 :(得分:1)

如果您使用create创建主题,则需要根据文档为其提供observerobservable参数。

  

Rx.Subject.create(观察者,可观察)

来源:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/subjects/subject.md#rxsubjectcreateobserver-observable

解决方案: 只需使用新的

创建它
dataSubject: Subject<string> = new Subject<string>();

来源:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service