使用服务和 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 的提示,则无效。
这是为什么?我在做错什么或我想念什么?
感谢您的帮助