Javascript Angular2(RxJS)订阅don';不要一按就开火
我想观察一个组件内部的事件,然后激发另一个组件中的不同事件。我在里面有声明服务和这样的代码Javascript Angular2(RxJS)订阅don';不要一按就开火,javascript,angular,rxjs,observer-pattern,Javascript,Angular,Rxjs,Observer Pattern,我想观察一个组件内部的事件,然后激发另一个组件中的不同事件。我在里面有声明服务和这样的代码 private updateIncomingMaterial = new Subject<IncomingMaterial>(); incomingMaterialUpdate$ = this.updateIncomingMaterial.asObservable(); updateIncMaterial(incomingMaterialToUpdate: Incom
private updateIncomingMaterial = new Subject<IncomingMaterial>();
incomingMaterialUpdate$ = this.updateIncomingMaterial.asObservable();
updateIncMaterial(incomingMaterialToUpdate: IncomingMaterial) {
this.updateIncomingMaterial.next(incomingMaterialToUpdate);
}
这是我想在另一个网站上订阅它的方式
ngAfterViewInit() {
this.subscription = this.incMatService.incomingMaterialUpdate$.subscribe((model: IncomingMaterial) => {
this.isUpdateMode = true;
this.imForm.setValue(model);
});
}
我不知道为什么当我第一次点击更新按钮时,它从来没有进入订阅的内部(在内部,我指的是this.UpdateMode=true和this.imForm.setValue(model))。为什么要使用rxjs而不使用角度输出属性?(见:)这两个组件都存在并且在单击时初始化了视图吗?因为其中一个组件是父组件,我不知道在这种情况下输出属性是否工作?视图可能已初始化,因为它是在ngAfterViewInit内部订阅的,但如果我第二次单击它,它将不在订阅的内部。确定我有要使用ReplaySubject而不是Subject,现在它可以正常工作:)
ngAfterViewInit() {
this.subscription = this.incMatService.incomingMaterialUpdate$.subscribe((model: IncomingMaterial) => {
this.isUpdateMode = true;
this.imForm.setValue(model);
});
}