App / auth / auth.services.ts:

import {Injectable} from '@angular/core';
import {Router} from '@angular/router';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
import {User} from './user';
import {Http, Headers, RequestOptions} from '@angular/http';
import 'rxjs/add/operator/map';


@Injectable()

export class AuthService {

  result: any; 

  constructor(private router: Router, private _http: Http) {}


  getUsers() {

    return this._http.get('/api/users').map(result => this.result = result.json().data);
  }
}

http: // localhost: 3000 / api / users:

{"status":200,"data":[{"_id":"5a63f4da17fc7e9e5548da70","name":"Jonson Doeal"},{"_id":"5a63faf417fc7e9e5548da71","name":"Jonson Bol"},{"_id":"5a64f44de87b3e2f80437c6b","name":"aaaa"}],"message":null}

Me gustaría recuperar datos en json del método getUsers para poder comparar valores

 for () {
   if (json_value_name == this.temp) {
   }
 }

Login.component.ts:

import {AuthService} from './../auth/auth.service';
import {Component, OnInit} from '@angular/core';


@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})

export class LoginComponent implements OnInit {

  constructor(  
    private authService: AuthService
  ) {}

  ngOnInit() {

  }

  onSubmit() {

      this.authService.getUsers();
      console.log('this.authService.getUsers() ' + JSON.stringify(this.authService.getUsers()));
    }
}

La consola devuelve:

this.authService.getUsers(){"_isScalar":false,"source":{"_isScalar":false},"operator":{}}

Me gustaría que volviera de esta forma:

{"status":200,"data":[{"_id":"5a63f4da17fc7e9e5548da70","name":"Jonson Doeal"},{"_id":"5a63faf417fc7e9e5548da71","name":"Jonson Bol"},{"_id":"5a64f44de87b3e2f80437c6b","name":"aaaa"}],"message":null}
0
user2129896 22 ene. 2018 a las 18:24

3 respuestas

La mejor respuesta

Necesitas usar subscribe

onSubmit() {

this.authService.getUsers().subscribe(data => {console.log(JSON.stringify(data)});

}
0
Arun Kumaresh 22 ene. 2018 a las 15:36

Lo que está recibiendo es el resultado esperado de esa llamada al método. Las llamadas http en observables de retorno angular. Eso significa que debe suscribirse a lo que está devolviendo. Dependiendo de lo que intente hacer, es posible que desee reestructurar su servicio o componente para utilizar completamente el patrón.

Para imprimir sus datos intente esto en su componente:

onSubmit() {
  this.authService.getUsers().subscribe((data) => {
    console.log(`users ${data}`)
  });
}

Esperemos que esto pueda ayudarlo a comenzar a usar observables.

0
Arun Kumaresh 22 ene. 2018 a las 16:41

Su mejor apuesta sería algo como esto:

private myData: any[];

ngOnInit() {
  myData = this.authService.getUsers();
}

onSubmit() {
  console.log('this.authService.getUsers() ' + JSON.stringify(myData));
}
0
rrd 22 ene. 2018 a las 15:31