Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 检查存储的内容时,会话值返回null_Angular_Typescript_Session_Ionic Framework - Fatal编程技术网

Angular 检查存储的内容时,会话值返回null

Angular 检查存储的内容时,会话值返回null,angular,typescript,session,ionic-framework,Angular,Typescript,Session,Ionic Framework,我正在开发一个ionic应用程序,我需要创建一个会话,因此当用户登录时,我会存储他的名字,然后我可以检查用户是否真的登录。为此,我创建了一个模型类和一个用户类。我的问题是,当我试图控制台记录存储在ionic中的值时,它会返回空值,下面的图像准确地解释了输出: 我不明白为什么它的日志记录方式像'0:n',1:o',2:m',3:e'。 我要做的是将用户名存储在会话中,同时记录日志 我是这样做的: import { Storage } from "@ionic/storage"; import {

我正在开发一个ionic应用程序,我需要创建一个会话,因此当用户登录时,我会存储他的名字,然后我可以检查用户是否真的登录。为此,我创建了一个模型类和一个用户类。我的问题是,当我试图控制台记录存储在ionic中的值时,它会返回空值,下面的图像准确地解释了输出:

我不明白为什么它的日志记录方式像
'0:n',1:o',2:m',3:e'
。 我要做的是将用户名存储在会话中,同时记录日志

我是这样做的:

import { Storage } from "@ionic/storage";
import { Injectable } from '@angular/core';
import { Usuario } from "./interface/usuario";

@Injectable()
export class Session {

    constructor(public storage: Storage){}

    create(usuario: Usuario) {
        this.storage.set('usuario', usuario);
    }

    get(): Promise<any> {
        return this.storage.get('usuario');
    }

    remove() {
        this.storage.remove('usuario');
    }

    exist() {
        this.get().then(res => {
            console.log('resultado >>> ', res);
            if(res) {
                console.log('resultado IF');
                return true;
            } else {
                console.log('resultado else');
                return false;
            }
        });
    }
}
模范班

import { Usuario } from './../interface/usuario'; 

export class Model{ 
    constructor(Usuario){ 
        Object.assign(this, Usuario); 
    } 
} 
在这里,我检索存储在Usuario对象中的内容,并在之后立即将其记录下来

ionViewDidLoad() {
  this.carregarPerfil();
  this.session.get()
    .then(res => {
      this.usuarioLogado = new Usuario(res);
      console.log('usuário logado  >>> ', this.usuarioLogado);
    });

  console.log(this.session.exist());

  this.session.remove();

  this.session.get()
    .then(res => {
      this.usuarioLogado = new Usuario(res);
      console.log('USUARIO LOGADO  >>> ', this.usuarioLogado);
    });

  console.log(this.session.exist());
}
编辑:下面是我在create中使用storage.get创建console.log时发生的情况

https://imgur.com/a/W2rQhd8

    create(usuario: Usuario) {
        this.storage.set('usuario', usuario);
        console.log('[TEST] VALUE BEING PASSED IS ', this.storage.get('usuario'));
    }

事情是这样的:

  • 在login.ts中有以下行:
    this.usuario=new usuario('nome')
  • Usuario继承了模型
  • 模型调用
    object.assign()
    ,使用构造函数中的参数设置自己的参数
  • 字符串本质上是一个数组
  • 因此,通过调用
    object.assign(这是'nome')
    可以创建与字符串中每个索引对应的参数,每个索引的值都是字符
显然,您希望在行中执行一些不同的操作,例如将
item
传递到构造函数中。然而,我认为object.assign业务是在自找麻烦,您应该更明确地说明结果的反序列化

export class Usuario {
    nome: string;
    email: string;
    login: string;
    senha: string;

    constructor(src: any) {
        if (src) {
            this.nome = src['nome'] || undefined;
            this.email = src['email'] || undefined;
            this.login = src['login'] || undefined;
            this.senha = src['senha'] || undefined;
        }
    }
}

在运行时调试
create
中传递的对象!或者发布
模型
类以及如何设置对象!请创建一个复制此问题的模型。@Ravikumar这是我的模型类:从“/../interface/Usuario”导入{Usuario};导出类模型{constructor(Usuario){Object.assign(this,Usuario);}}@SiddAjmera请发布您如何设置对象!抱歉耽搁了@SiddAjmera,这是代码src的上下文是什么?很抱歉,我不太明白你的代码到底在做什么。C是你传递给构造函数的对象。调用
this.usuarioLogado=new Usuario(res)
在您的示例中,
res
将是
src
。您正在显示Promise对象。您需要执行
this.storage.get('usuario')。然后(x=>console.log(x))
export class Usuario {
    nome: string;
    email: string;
    login: string;
    senha: string;

    constructor(src: any) {
        if (src) {
            this.nome = src['nome'] || undefined;
            this.email = src['email'] || undefined;
            this.login = src['login'] || undefined;
            this.senha = src['senha'] || undefined;
        }
    }
}