Estoy tratando de pasar datos de un componente a otro componente. Usé el método de archivo de servicio. Creé dos componentes, uno es inicio de sesión y el segundo es hogar. Tengo que pasar datos de inicio de sesión a casa. en el componente de inicio de sesión, tomo la entrada del usuario y el componente de inicio debería imprimir eso. Usé este código a continuación, pero cuando doy entrada, no se imprime en la salida.
import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class SharedService { message : any; constructor() { } setMessage(data: any){ this.message=data; } getMessage(){ return this.message; } } import { Component, OnInit } from '@angular/core'; import { SharedService } from '../shared/shared.service' @Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.css'] }) export class HomeComponent implements OnInit { message : string | undefined; constructor(private shared:SharedService ) {} ngOnInit() { this.message =this.shared.getMessage() } } <h1> {{ message }} </h1> import { Component, OnInit } from '@angular/core' import { SharedService } from "../shared/shared.service" @Component({ selector: 'app-login', templateUrl: './login.component.html', styleUrls: ['./login.component.css'] }) export class LoginComponent implements OnInit { message : any ; constructor( private shared: SharedService ) { } ngOnInit(): void { this.shared.setMessage(this.message) } } <input required type="text" class="form-control" placeholder="Enter username" [(ngModel)]="message">por supuesto, no funcionará de esta manera. La razón por la que no funciona. cuando llama a SharedService en su constructor en el componente de cuadro, crea una instancia de su servicio con el mensaje: any. si lo cambia en un componente, no cambiará en el otro componente.
lo que puedes hacer es. en su servicio message = new Subject() ; setMessage(data: any){ this.message.next(data) ; } usted llama al mensaje establecido en su componente de inicio de sesión. y en su componente de inicio se suscribe al tema así. this.sharedService.getMessage().subscribe( (result :any ) => {console.log(result )} .
lo siento si esta respuesta es desordenada, esta es la primera vez que uso SOF.