Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
¿Cómo acceder a los datos en diferentes componentes en Angular?

Estoy tratando de crear un portal de vue de resultados de estudiantes y maestros en el que los maestros puedan iniciar sesión y ver todos los resultados de los estudiantes y agregarlos a esa lista o editar esa lista. Los estudiantes pueden iniciar sesión para buscar con sus credenciales y ver su propio resultado.

Tengo una lista de estudiantes (Array). Quiero usar esa lista en mi vue de estudiante para buscar en la lista y devolver al estudiante con las credenciales coincidentes. Quiero usar esa lista para proporcionarles a los maestros la funcionalidad CRUD para una lista completa.

No pude encontrar la forma correcta de obtener acceso a la lista de estudiantes en diferentes partes de mi proyecto.

Intenté usar @Input y Service, pero no pude hacerlo de la manera correcta y obtengo una matriz vacía en ambos métodos.

¿Cuál es la forma correcta de lograr esto? Tengo datos en el componente hermano. ¿Debo almacenar datos en el componente principal? Por favor, ayúdame a encontrar la forma correcta de hacer esto.

Este es el componente donde tengo los datos, componente de estudiantes. También puede ver el componente y la estructura del proyecto en esta foto. Actualmente estoy tratando de transferir datos entre hermanos usando el servicio y fallé. Estoy configurando los datos en el constructor usando:

 this.studentTransferData.setData(this.students)

ahi es donde tengo los datos

Estoy tratando de obtener datos en mi componente StudentView usando:

 export class StudentViewComponent implements OnInit {

 name: string = ""
 rollno: number = 0
 
 studentList = this.studentDataTransferService.getData();

 @Input() students: Student[] = []
 @Output() studentSearch: EventEmitter<Student> = new EventEmitter();

 constructor(private studentDataTransferService: StudentDataTransferService) {
 console.log(this.students)
 console.log(this.studentList)
 }

Consola matriz vacía.

Cómo obtener los datos en mis diferentes componentes. Lo tengo en el componente de estudiantes. Gracias.

Editar: Intenté hacerlo dentro de ngInit como se sugiere en diferentes publicaciones y no funciona como se esperaba y lo quiero en un proyecto completo (hermanos y padre a hijo) Eso no es lo que quiero en este momento.

almost 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Cuando necesita compartir datos entre varios componentes, generalmente usa un servicio.

Para ser realmente reactivo, también debe usar lo que se llama proxies: esos son elementos RxJS que pueden actuar tanto como observables como observadores.

 private _students = new BehaviorSubject<Student[]>([]);
public students$ = this._students.asObservable();

get students() { return this._students.value; }

loadStudents() {
 this.http.get<Student[]>(...).subscribe(students => this._students.next(students));
}

Luego en otros componentes

 students$ = this.service.students$;
constructor(private service: StudentsService) {}
 <ng-container *ngFor="let student of students$ | async">
 ...
</ng-container>

EDITAR: usarlo en servicios

Sí, puedes usarlo en los servicios. Si necesita realizar una llamada HTTP en algún momento, esta es la mejor solución:

 
constructor(private service: StudentsService) {}

rewardStudent() {
 const bestStudent = this.service.students[0];
 this.http.post(...).subscribe();
}

De lo contrario, tiene acceso a students$ la misma manera que lo hace con los componentes.

almost 4 years ago · Santiago Trujillo Report

0

Puede crear y almacenar la lista de estudiantes dentro de una clase de servicio para estudiantes y también crear una función pública: getStudentsList dentro de su servicio y luego llamarla desde sus diferentes vues.

almost 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!