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

atualizar variavel do ngOnInit.

Boa tarde,

É possivel atualizar uma variavel que esta no ngOinit?

exemplo assim que carregar a pagina ela carrega o seguinte:

ngOnInit(){
    let loader = this._loadingCtrl.create({
      content: 'Buscando...'
  });

  var idAllLoja = this.usuarioLoja;
  var idallObj = Object(idAllLoja.Lojas);
  var arrLojas = [];

  var i = 0 ;

  for (i=0;i<idallObj.length;i++){
    this.idLoja.push(idallObj[i].loja_id)



 }console.log(this.idLoja);




  var data:any = new Date();

  var dia:any = data.getDate();
   if (dia.toString().length == 1)
    dia = "0"+dia;

    var mes = data.getMonth()+1;
  if (mes.toString().length == 1)
    mes = "0"+mes;

    var ano = data.getFullYear();  
  var dataHoje =  ano+"-"+mes+"-"+dia;


  var params: URLSearchParams = new URLSearchParams();
  params.set('versao','1.1' );
  params.set( 'token', `${this.usuarioLogado.usu_token}`);
  params.set( 'servico', 'app_painel_gerencial');
  params.set( 'param', `{"lojas":[${this.idLoja}], "dataHoje":"${dataHoje}", "dataOpcao":"${this.dias}"}`);
  params.set('tp_retorno','JSON');

loader.present();
  this._http
  .post("http://209.126.99.81:8081/scriptcase/app/webservice/api_servidor_teste/api_servidor_teste.php",params)

    .map(res => res.json())
    .subscribe(
      data => {
      this.postHome = data;
      console.log(data);
      loader.dismiss();



      });

da forma que esta ai ele carrega todas as lojas que se encontra no for, Porem no template eu tenho um ion option:

 <div padding>
          <ion-item >
              <ion-label>Loja:</ion-label>
              <ion-select  [(ngModel)]="idLoja" multiple="true">
                  <ion-option (ionSelect)="allClickedCategories()">Select/Deselect All</ion-option>
                <ion-option   *ngFor="let loja of usuarioLoja.Lojas"  value="{{loja.loja_id}}">{{loja.loja_nome}}</ion-option>

              </ion-select>
            </ion-item>

tudo que esta no option select vem marcado, porem quando eu desmarcar e aperta em um botao atualizar, ele tem q retirar os id desmarcado e fazer um nova requisição.

Podeira me ajudar?

1 resposta
solução!

Boa noite, Renan! Como vai?

Primeiro vc terá que reestruturar o seu código pq da forma que está vai ter duplicação de código! Vc deverá criar um método efetuaRequicao() que irá receber um array com os ids das lojas em questão e fará a requisição para a sua API:

ngOnInit() {
     efetuaRequisicao(todosIds);
}
efetuaRequisicao(idsLojas) {
     // efetua a requisição...
}

Depois, deverá fazer um método que será executado quando clicar no botão de atualizar, chamando o método efetuaRequisicao() e passando para ele os ids das lojas selecionadas. De acordo com o que pude entender do seu template, essa informação é guardada no atributo idLoja:

atualizar() {
     efetuaRequisicao(this.idLoja);
}

OBS.: Como visto durante o curso, não é uma boa prática manter requisições para a API na classe do seu componente (no caso, uma página da sua aplicação)! O ideal é que vc crie um serviço para encapsular todas as lógicas de acesso a API.

Grande abraço!