Tengo un servicio de datos para comunicarme con mi servidor.
export class DataService { constructor(private http: Http) { } getUsers():Observable<Users>{ return this.http.get(myurl).map(this.extractData); } extractData(res:Response){ return res.json(); } }Lo uso dentro de mi componente de esta manera.
ngOnInit() { this.getUsers(); } getUsers():void{ this.dataService.getUsers().subscribe(response=>{ this.users = response; } ); } La variable this.user es una entrada para una tabla. Cuando inicio el componente antes, veo la tabla vacía y después, cuando se cargan los datos, veo la tabla con todos los usuarios. ¿Cómo puedo ver el componente justo cuando los datos están listos?
Cuando inserto un nuevo usuario en mi servidor, no lo veo en mi tabla y necesito actualizar la página. ¿Cómo puedo mostrar (en tiempo real) un nuevo usuario en la tabla, después de una inserción, sin actualizar la página?
Gracias
¿Cómo puedo ver el componente justo cuando los datos están listos?
Debe mover esta lógica de recuperación de datos a un Resolver y el componente debería obtener datos de él.
¿Cómo puedo mostrar (en tiempo real) nuevos datos en la tabla, después de una inserción, sin actualizar la página?
Debe iniciar la lógica de recuperación de datos al insertar dentro de su componente y actualizar la referencia a la variable 'usuarios' con nuevos datos.
Siempre puede inicializar this.users a nulo. Luego, en su marcado podría hacer algo como esto:
<div *ngIf="users"> <!-- Your content here --> </div> Cuando los usuarios se conviertan en no nulos, Angular comenzará a representar el div etiquetado con *ngIf . Esto funciona porque en JS null es falso. Si eso parece tonto, siempre puede establecer una bandera booleana en su suscripción a la que haga referencia en el bloque * *ngIf ( *ngIf="myFlag" ).