提问人:Sangram Patil 提问时间:11/16/2023 更新时间:11/16/2023 访问量:20
BehaviorSubject/Subject 发出基元值和非基元引用 - POC 结果
BehaviorSubject/Subject Emits Values for Primitive and References for Non-Primitive - POC Results
问:
有人可以在下面说明一下,因为它不是互联网上广泛讨论的话题。如果有人通过进一步的分析来证实这一点,将会有所帮助。
我想知道 Subject 和 BS 只发出订阅中非原始数据类型的引用。因此,如果多个组件使用发出的对象,则这些组件仅访问在组件之间共享的单个副本。
这些是我的 POC 的观察结果:https://stackblitz.com/edit/angular-12-starter-project-daidh-4x2jth?file=src%2Fapp%2Fstudent.service.ts
为了快速浏览,请共享下面的代码屏幕截图:
student.service.ts:
studentSubject = new Subject<any>();
counterSubject = new Subject<any>();
emitValues() {
//get student obj from db here
let student = { rollNo: 1, name: 'student1', age: 20 };
this.studentSubject.next(student);
let counter = 1;
this.counterSubject.next(counter);
}
以上 2 个主题在 3 个组件中订阅,发出的值与文本框值绑定。
对于 Student 对象(非基元):从任何组件到发出值的更改将反映在其他组件中,尽管该对象实际上不是通过服务共享的对象。
对于计数器值(基元):从任何组件到发出值的变化,不会反映到其他组件。
student1.component.ts:
student: any = {};
counter: any;
ngOnInit() {
this._studentService.studentSubject.subscribe((stud) => {
this.student = stud;
console.log(stud);
});
this._studentService.counterSubject.subscribe((counter) => {
this.counter = counter;
});
}
student2.component.ts:
student: any = {};
counter: any;
ngOnInit() {
this._studentService.studentSubject.subscribe((stud) => {
this.student = stud;
console.log(stud);
});
this._studentService.counterSubject.subscribe((counter) => {
this.counter = counter;
});
}
答: 暂无答案
上一个:在对象内部搜索键
评论