本地存储/会话存储

时间:2020-09-08 06:29:56

标签: javascript html css angular local-storage

我的HTML文件如下:

<h2>Welcome User!!!</h2>
<form class="container" action="/product">
    <div>
        <label for="mail"><b>Email-ID: [(ngModel)]</b></label>
        <input type="text" placeholder="Enter mail ID" [(ngModel)]="mail" name="mail" required>
        <label for="psw"><b>Phone Number</b></label>
        <input type="text" placeholder="Enter Phone Number" [(ngModel)]="mail" name="phoneNumber" required>

        <button (click)="myFunc()">NEXT</button>
    </div>
</form>

我的Typescript文件如下:

   import { Component, NgModule, OnInit } from '@angular/core';
import { Router, RouterModule, Routes } from '@angular/router';
import { MyProductPageComponent } from '../my-product-page/my-product-page.component';


@Component({
  selector: 'app-my-home-page',
  templateUrl: './my-home-page.component.html',
  styleUrls: ['./my-home-page.component.css']
})

export class MyHomePageComponent implements OnInit {
  phoneNumber = "";
  mailID = "";

  constructor(private router: Router) {
  }

  ngOnInit(): void {
  }

  myFunc() {
    localStorage.setItem("phoneNumber", this.phoneNumber);
    localStorage.setItem("mail", this.mailID);
    this.router.navigate(['/products']);
  }
}

const routes: Routes = [
  { path: 'MyProductPageComponent', component: MyProductPageComponent },
]

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})

我想获取以表格形式输入的电话号码和邮件ID,并将其保存在本地存储中。并重定向到下一页。请帮忙。 正在收到此错误:需要声明。

3 个答案:

答案 0 :(得分:1)

您需要使用ngmodel将值与输入控件绑定,并且可以在组件中访问。

<h2>Welcome User!!!</h2>
<form class="container" action="/product">
    <div>
        <label for="mail"><b>Email-ID: </b></label>
        <input type="text" [(ngModel)]="mailID" placeholder="Enter mail ID" name="mail" required>
        <label for="psw"><b>Phone Number</b></label>
        <input type="text" placeholder="Enter Phone Number" name="phoneNumber" [(ngModel)]="phoneNumber" required>

        <button (click)="myFunc()">NEXT</button>
    </div>
</form>

答案 1 :(得分:1)

  1. .ts 组件中的电话/邮件中添加变量

  2. 使用thismyFunc()中的变量以获取变量的值

  3. 使用ngModel将变量与用户输入绑定(在输入{label上设置ngModel而不是标签)。

  4. import { NgModule } from '@angular/core';中使用app.module,而不要在组件中使用

see working code

<h2>Welcome User!!!</h2>
<form class="container" action="/product">
    <div>
        <label for="mail"><b>Email-ID:</b></label>
        <input type="text" placeholder="Enter mail ID"  [(ngModel)]="mail" name="mail" required>
        <label for="psw"><b>Phone Number</b></label>
        <input type="text" placeholder="Enter Phone Number" [(ngModel)]="phoneNumber" name="phoneNumber" required>

        <button (click)="myFunc()">NEXT</button>
    </div>
</form>


  phoneNumber = "";
  mailID = "";
  myFunc() {
    localStorage.setItem("phoneNumber", this.phoneNumber);
    localStorage.setItem("mail", this.mailID);
  }

答案 2 :(得分:1)

        const routes: Routes = [
          { path: 'MyProductPageComponent', component: MyProductPageComponent },
        ]
        The path variable should not have a component  and you are using router.navigate('/products') 
       const routes: Routes = [
          { path: 'products', component: MyProductPageComponent },
        ]
These variables which are used in the ts should bind with the ngModel used in the template 
phoneNumber = "";
mailID = "";

<h2>Welcome User!!!</h2>
<form class="container" action="/product">
    <div>
        <label for="mail"><b>Email-ID: </b></label>
        <input type="text" placeholder="Enter mail ID" [(ngModel)]="mailID" name="mail" required>
        <label for="psw"><b>Phone Number</b></label>
        <input type="text" placeholder="Enter Phone Number" [(ngModel)]="phoneNumber" name="phoneNumber" required>

        <button (click)="myFunc()">NEXT</button>
    </div>
</form>