存储离子4 [重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

我是Angular世界的初学者,我很想在离子存储器4中插入和检索信息,但是,当我尝试检索它时,它会返回我的空数组。

我做了以下

export class OcorrenciasPage implements OnInit {

  public ocorrencia: CAD231SolitacaoOcorrencia[] = new Array();
  public url = 'http://localhost:53834/api/';
  constructor(private ocorrenciaService: CAD231SolicitacaoOcorrenciaService, private storage: Storage, private http: HttpClient) {



    this.http.get(this.url + 'CAD231/').subscribe(response => {
      for (let i = 0; i < Object.keys(response).length; i++) {
        this.ocorrencia.push({
          'idSolitacaoOcorrencia': response[i]['IdSolicitacaoOCorrencia'],
          'idProvedor': response[i]['IdProvedor'],
          'idStatusOcorrencia': response[i]['IdStatusOcorrencia'],
          'idTipoSolitacaoOcorrencia': response[i]['IdTipoSolicitacaoOcorrencia'],
          'dataCadastro': response[i]['DataCadastroSolicitacao'],
          'descricaoSolicitacao': response[i]['DescricaoSolicitacao'],
          'idUsuarioCadasro': response[i]['IdUsuarioCadastro'],
          'idCliente': response[i]['IdCliente']
        });
      }
    });
    console.log(this.ocorrencia);
    this.storage.set('ocorrencias',this.ocorrencia)

    storage.get('ocorrencias').then((val) => {
      console.log(val);
    });


  }
  ngOnInit() {

  }
}

“ocorrencia”属性正在填写正确,

但结果是空的,有人可以解释原因

在这里

here is the values ​​of the "occurrence" property and the value returned by the "storage"

angular ionic4
1个回答
0
投票

subscribe方法用于Observable。这意味着当对象发生变化时它会触发。对于此示例,您将从后端服务获取一些数据,并且您的程序将设置存储到localstorage而无需等待后端的回复。这就是我们使用Observable的原因。

要解决此问题,您必须在获得后端响应后设置存储,因此您必须在订阅中移动设置存储方法。 Here是Observables的文档

this.http.get(this.url + 'CAD231/').subscribe(response => {
  for (let i = 0; i < Object.keys(response).length; i++) {
    this.ocorrencia.push({
      'idSolitacaoOcorrencia': response[i]['IdSolicitacaoOCorrencia'],
      'idProvedor': response[i]['IdProvedor'],
      'idStatusOcorrencia': response[i]['IdStatusOcorrencia'],
      'idTipoSolitacaoOcorrencia': response[i]['IdTipoSolicitacaoOcorrencia'],
      'dataCadastro': response[i]['DataCadastroSolicitacao'],
      'descricaoSolicitacao': response[i]['DescricaoSolicitacao'],
      'idUsuarioCadasro': response[i]['IdUsuarioCadastro'],
      'idCliente': response[i]['IdCliente']
    });
  }
  console.log(this.ocorrencia);
  this.storage.set('ocorrencias',this.ocorrencia)
  storage.get('ocorrencias').then((val) => {
  console.log(val);
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.