在与BehaviorSubject Angular 8不相关的组件之间发送数据时出错

时间:2019-11-01 13:35:09

标签: angular typescript

使用服务 BehaviorSubject 在不相关的组件之间传递数据时,我遇到了问题,问题是当接收数据时,变量Behavior的值到达了像这样(“”)为空,我不明白为什么我要澄清我的组件之间没有任何关系。

我的服务

@Injectable()
export class GestioOperacionesService {

    private enviaRecibe = new BehaviorSubject<string>('');
    enviaRecibe$ = this.enviaRecibe.asObservable();

    // Store message, ready to show it to whoever asks.
    enviar(mensaje) {
        // function that will call who wants to transmit a message.
        this.enviaRecibe.next(mensaje);
    }
    constructor() { }
}

我发送数据的组件:(我不只是通过方法上传整个组件:

 Procesar(data) {
    const urlModulo = moduloAGestionar.validarModuloGestionar(data.IdModulo);
    this.gestionServiceOperacion.enviar('Envia mensaje desde componente'); // esta linea envia el mensaje
    this.router.navigate(['/Clientes/Juridicos']);
    console.log(data);
  }

我的接收组件:

 CargaDataOperaciones() {
    this.gestionServiceOperacion.enviaRecibe$.pipe(take(1))
      .subscribe(mensaje => setTimeout(() => this.dataRecibida = mensaje, 0));
  }

这是我声明其接收变量的方式:

public dataRecibida: string;

后者是接收组件发送的信息并在视图中显示的方法,但是在空着的情况下,我尝试了不使用 TimeOut ,不使用 pipe < / strong>而没有 take 的提示,则无效。

这是为什么?我在做错什么或我想念什么?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我已经测试了您的代码。 Go through this code

工作正常。可能是您未正确调用函数CargaDataOperaciones。看看。