代码之家  ›  专栏  ›  技术社区  ›  LW001 Rohan Muhammad

在角页面中显示本地存储的值

  •  -2
  • LW001 Rohan Muhammad  · 技术社区  · 7 年前

    这应该是件小事,但我一辈子都搞不清楚。

    我需要的 是默认情况下为用户从本地存储中的值填充的输入字段。

    我遇到的问题是,通常我都不会这样做(jQuery onload、JS onload或 (onload) 在HTML标记中)似乎是在用户切换到其他页面而不重新加载时运行的。我也试过 ngOnInit() 但这似乎是在页面的DOM内容准备好编辑之前运行的,在这里不起作用。

    这是我的代码:

    <form (submit)="editName($event)">
      <div class="form-group">
        <label for="nameInput">Name</label>
        <!-- I want to insert the localStorage Value user_name into this input -->
        <input type="name" class="form-control" id="nameInput" (onload)="initName()"> 
      </div>
      <button type="submit" class="btn btn-primary">Save changes</button>
    </form>
    

    在我的组件中也有一个实现这一点的悲伤尝试

    initName() {
      document.getElementById("nameInput").textContent = localStorage.getItem('user_name');
    }
    

    控制台中的错误消息是:

    ERROR TypeError: Cannot read property 'user_name' of undefined
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   Agus Suhardi    7 年前

    TS页

    1. 初始变量 username:string;

    2. 从localstorage为fill变量创建函数

    getName(){ this.username = localStorage.getItem("user_name"; }

    1. 页面加载时调用变量

    onInit(){ this.getName(); }

    html页面

    <input type="name" class="form-control" id="nameInput" value="{{username}}">

        2
  •  1
  •   Brandon Taylor    7 年前

    在这种情况下,我建议使用角度反应形式,而不是手动检索和绑定值。

    在组件中,创建一个FormGroup实例,并将值从localStorage绑定到表单控件:

    @Component({
      template: `
        <form *ngIf="form" [formGroup]="form" (submit)="editName($event)">
          <div class="form-group">
            <label for="nameInput">Name</label>
            <input formControlName="name" type="name" class="form-control" id="nameInput"> 
          </div>
          <button type="submit" class="btn btn-primary">Save changes</button>
        </form>
      `
    })
    export class YourComponent implements OnInit {
      form: FormGroup;
    
      ngOnInit(): void {
        this.form = new FormGroup({
          name: new FormControl(localStorage.getItem('user_name')),
        });
      }
    }
    

    有关角度反应形式的详细信息,请参见: https://angular.io/guide/reactive-forms

        3
  •  0
  •   LW001 Rohan Muhammad    7 年前

    getUsername() {
      return localStorage.getItem('user_name');
    }
    

    然后我使用以下命令将其绑定到输入:

    <input type="name" class="form-control" id="nameInput" value="{{getUsername()}}">