Angular 在两条路由之间共享数据

Angular 在两条路由之间共享数据,angular,rxjs,angular-route-segment,Angular,Rxjs,Angular Route Segment,我正在尝试在两条名为教师和学生的路径之间传递数据。这两条路径都使用相同的组件和另一个视图 我有一个问题,就是把布尔值从老师传给学生,我正在建立一个这样的服务: 服务: import {Injectable} from "@angular/core"; import { BehaivorSubject, Observable } from 'rxjs'; @Injectable({ providedIn: "root", }) export cl

我正在尝试在两条名为教师和学生的路径之间传递数据。这两条路径都使用相同的组件和另一个视图

我有一个问题,就是把布尔值从老师传给学生,我正在建立一个这样的服务:

服务:

 import {Injectable} from "@angular/core";  
 import { BehaivorSubject, Observable } from 'rxjs';
@Injectable({
  providedIn: "root",
})
export class MainServicesService {
private myBbsubject = new BehaviorSubject<boolean> (false);
  myBsObs = this.myBbsubject.asObservable();
constructor(){}
 Camera( isCamera: boolean) {
 this.myBbsubject.next(isCamera)
}
}
老师:

    import { Component, OnInit} from '@angular/core';
    import { MainServicesService } from 'src/app/services/main-services.service';
    
    @Component({
      selector: 'app-teachers',
      template:`<button (click)="Camera()">Camera</button>`,
      styleUrls: ['./teachers.component.css']
    })
    export class TeachersComponent implements OnInit,OnDestroy {
    
      constructor(private mainService: MainServicesService) {
    
      }
      ngOnInit(): void {
        this.mainService.myBsObs.subscribe(profile =>console.log('teachers',profile));
       
        }
    
       
  Camera(){
     this.isCamera = !this.isCamera;
     this.mainService.Camera( this.isCamera);

  }
      
    }
从'@angular/core'导入{Component,OnInit};
从'src/app/services/main services.service'导入{mainservices服务};
@组成部分({
选择器:“应用程序教师”,
模板:`Camera`,
样式URL:['./teachers.component.css']
})
导出类Teachers组件实现OnInit、OnDestroy{
构造函数(专用主服务:主服务服务服务){
}
ngOnInit():void{
this.mainService.myBsObs.subscribe(profile=>console.log('teachers',profile));
}
摄影机(){
this.isCamera=!this.isCamera;
this.mainService.Camera(this.isCamera);
}
}

当我点击相机的按钮时,主体将我的a布尔值直接发送到相机的函数,主体触发了下一个状态。但是我的路由器模块的路由没有按预期工作。学生组件将false作为默认值,并且没有像老师那样进行更新;(老师将订阅状态更改为true,但学校的订阅不会在订阅内部进行更新)我没有(在app.component.ts中喜欢组件,工作正常,但路由器插座不工作)如何修复此行为…?

我认为您在复制/粘贴时出错,因为您的两个组件都称为
TeachersComponent
。问题是,当您的可观察对象在TeachersComponent中发射某些内容时,您的studentsComponent尚未订阅(因为它未在视图中加载)。所以它不会得到最后一次发射。我是手写的,因为我的服务中有更多的代码。但我认为想法很清楚。的两个组件(一个称为TeacherComponent,另一个称为StudentComponent)不起作用。谢谢你的回答。你能在stackblitz.com上复制这个问题吗?我认为你在复制/粘贴时犯了一个错误,因为你的两个组件都称为
TeachersComponent
。问题是,当您的可观察对象在TeachersComponent中发射某些内容时,您的studentsComponent尚未订阅(因为它未在视图中加载)。所以它不会得到最后一次发射。我是手写的,因为我的服务中有更多的代码。但我认为想法是明确的。两个组件一个叫做TeacherComponent,另一个里面的StudentComponent不起作用。谢谢你回答我。你能在stackblitz.com上复制这个问题吗?
    import { Component, OnInit} from '@angular/core';
    import { MainServicesService } from 'src/app/services/main-services.service';
    
    @Component({
      selector: 'app-teachers',
      template:`<button (click)="Camera()">Camera</button>`,
      styleUrls: ['./teachers.component.css']
    })
    export class TeachersComponent implements OnInit,OnDestroy {
    
      constructor(private mainService: MainServicesService) {
    
      }
      ngOnInit(): void {
        this.mainService.myBsObs.subscribe(profile =>console.log('teachers',profile));
       
        }
    
       
  Camera(){
     this.isCamera = !this.isCamera;
     this.mainService.Camera( this.isCamera);

  }
      
    }