Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
¿Cómo pasar datos de un componente a otro dinámicamente sin la relación "Padre-hijo" en Angular 2+?

Esta es una discusión algo abierta, pero tengo mucha curiosidad por pasar datos dinámicamente de un componente a otro.

Sé que se puede hacer usando el decorador @Input() . Pero tiene sus desventajas, como que no puede usar el botón Atrás en su navegador. Porque si lo hace, entonces retrocederá una página entera. No funcionará en el método Parent-Child porque estamos usando ng-If para ocultar las directivas secundarias en una página y no actualizará el contenido dinámicamente a menos que vuelva a cargar esa página. Y cuando vuelves a cargar esa página, pierdes el estado actual de la interfaz de usuario.

Si los datos son estáticos, entonces no hay absolutamente ningún problema, pero cuando son dinámicos e intentas pasar los datos, se muestran como undefined .

Agradecería cualquier sugerencia sobre cómo sería capaz de lograr eso.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Otra forma es usando un servicio . Tienes que usar el servicio como un "almacén" de tus valores de datos:

  1. Crear un servicio:
 ng gs MyServiceName --skip-Tests

Una vez creado, comprobar que se ha decorado como se indica en root:

 @Injectable({ providedIn: 'root', }) export class MyServiceNameService { ....
  1. En su servicio, declare todos los datos que desea que compartan los componentes (que tengan en común) y cree métodos setters/getters para estos datos. p.ej:
 private _myVariable: string; get myVariable(){ return _myVariable; } set myVariable(newValue: string){ this._myVariable = newValue; } constructor(){ _myVariable = "exampletest"; }
  1. Inyecte el servicio en el constructor de sus componentes (en padre e hijo):
 ... import { MyServiceNameService } from '../../services/my-service-name.service'; ... constructor( private myServiceNameService : MyServiceNameService ) { } ...
  1. Usado directamente las variables en el servicio a través de métodos en el servicio para modificar los valores de las variables u obtener sus valores.

por ejemplo: en componentes:

 let myVariable:string; .... getNewValue(){ myVariable = this.myServiceNameService.myVariable; } setNewValue ( newValue: string) { this.myServiceNameService.myVariable(newValue); }
over 4 years ago · Santiago Trujillo Denunciar

0

Podría haber varias formas aquí:

  1. Puede crear un servicio angular (use la anotación @Injectable() para crear el servicio). El servicio angular sigue el patrón de diseño singleton y se puede compartir entre varias páginas de su aplicación. Donde sea que lo necesite, simplemente inyecte ese servicio y podrá acceder a todas las propiedades/métodos.
    Enlace cómo crear un servicio angular -

    https://angular.io/guide/architecture-services

  2. Puede usar el concepto redux y crear una tienda que tenga datos y luego esos datos podrían ser accesibles en todas las páginas. NgRx es la mejor biblioteca con Angular para crear almacenamiento y acceder a datos donde sea necesario. enlace ngrx -

    https://ngrx.io/guide/store

  3. Puede usar la biblioteca RxJs para compartir datos entre componentes del mismo nivel.
    enlace rxjs -

    https://rxjs.dev/guide/overview

over 4 years ago · Santiago Trujillo Denunciar

0

Use un servicio compartido y cree un observable dentro del servicio, luego inyecte este servicio a los componentes que necesitan acceder a estos datos compartidos y cree una suscripción en cada componente. Cada vez que los datos en el observable cambien, los componentes suscritos serán notificados.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda