Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

três arrays diferentes para o resultado do console.log

Olá,

Estou com a seguinte dúvida: no exercício a baixo foi atribuído um array obtido no json à um array criado na classe, o array fotos, porem se efetuo o comando console.log(this.fotos) dentro da função que atribui os valores ao array fotos é mostrado um resultado, se eu faço o comando dentro do construtor,após a função, é apresentado outro resultado e se eu faço o comando console.log(fotos);

Fiquei na duvida, por que isso ocorre? afinal o valor de fotos foi alterado somente dentro da função. Teoricamente o mesmo permanece o mesmo dentro dessa instancia da classe até ser alterado posteriormente, o que não ocorreu.

import { Component } from '@angular/core';
import { Http} from '@angular/http';

@Component({
    selector:'app',
    templateUrl:'./app/app.component.html'
})
export class AppComponent{

fotos: Object[] = [];
    constructor(http : Http){
        let stream = http.get('v1/fotos');
        stream.subscribe(res=>{
         this.fotos = res.json();
         console.log(this.fotos);     
    })
    console.log(this.fotos);   
    }

    console.log(fotos);
}
1 resposta
solução!

Olá ! É mesma explicação para o JavaScript básico que você já deve saber. Subscribe é assíncrono. Ficou mais claro agora?

O último console.log é indevido. Lembre-se das aulas de ES6, pré requisito deste curso. Relembrando... Você só pode acessar propriedades de instância dentro do construtor ou métodos, não ddirtamente no bloco da classe.

Sucesso e bom estudo meu aluno.