我已经把一个简单的例子放在一起,我认为应该可行..但它没有:( 我需要帮助理解我做错了什么。
@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
值触发一次。
答案 0 :(得分:1)
如果您使用create
创建主题,则需要根据文档为其提供observer
和observable
参数。
Rx.Subject.create(观察者,可观察)
解决方案: 只需使用新的
创建它dataSubject: Subject<string> = new Subject<string>();
来源:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service