Angular 角订阅只触发一次
尝试在click listener上使用行为主题进行订阅,并在进行订阅的组件的第一次加载时仅从服务获取空对象Angular 角订阅只触发一次,angular,rxjs,observable,angular-services,behaviorsubject,Angular,Rxjs,Observable,Angular Services,Behaviorsubject,尝试在click listener上使用行为主题进行订阅,并在进行订阅的组件的第一次加载时仅从服务获取空对象 ngOnInit() { this.shareDataService.dataUpdate$.subscribe(success =>{ this.data = success; }) } 我尝试了observable和async管道,结果是一样的。服务在“根目录”中提供。如果订阅位于ngOnChanges(changes:SimpleChange
ngOnInit() {
this.shareDataService.dataUpdate$.subscribe(success =>{
this.data = success;
})
}
我尝试了observable和async管道,结果是一样的。服务在“根目录”中提供。如果订阅位于ngOnChanges(changes:SimpleChanges){}
lifecycle钩子订阅会在每次单击时激发,但始终存在空对象
我试着复制它,一切都很好。对象从对象发送方
组件发送到服务
this.shareDataService.dataVisibility(this.data);
对象是在receiver
组件中接收的,这是预期的行为,所以我不知道为什么应用程序中有空对象
可能是什么问题?这是预期的行为 您正在Ngonit生命周期上从对象发送器组件发送数据`
export class ObjectSenderComponent implements OnInit {
constructor(private shareDataService: ShareDataService) { }
data: Object = {};
ngOnInit() {
this.shareDataService.dataVisibility(this.data);
}
onClick = () => {
this.data = {
dataName: "Data",
dataVisible: true
}
this.shareDataService.dataVisibility(this.data);
}
}
使用异步管道将组件添加/删除到dom中`
<app-receiver
*ngIf="shareDataService.isBtnClicked$ | async"
></app-receiver>
我没有完全理解这个问题,你能再详细一点吗?你想做什么?预期的结果是什么?数据来自何处?尝试获取包含从组件1发送到服务的数据的对象,并尝试使用订阅从服务获取组件2中的这些对象。始终在组件2中获取空对象,尽管服务中的对象不是空的。能否显示实现主题的代码?@Talg123请查看[Subject.service]()。有一个行为主体的实现,在服务中(dataInfo)对象记录在控制台中。
<button (click)="onClick()"> Get Object </button>
data: Object = {};