0

嗨,我有以下简单的 Angular 12 项目,带有登录页面和主页。代码如下:home.component.html

<div class="text-center" style="width: 100%">
    <h1>home</h1>
</div>

home.component.ts

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'home',
  templateUrl: './home.component.html',
  styleUrls:['./home.component.css']
})
export class HomeComponent implements OnInit {
  
  constructor() { }
  
  ngOnInit(): void {
  }

}

login.component.html

<div class="text-center" style="width: 100%">
    <loginbox [clickLoginFunction]="login"></loginbox>
</div>

登录组件.ts

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls:['./login.component.css']
})
export class LoginComponent implements OnInit {
  
  constructor( private router: Router) { }

  ngOnInit(): void {
  }

  login(): void {
    console.log("HOLA");
    this.router.navigate(['/home']);
  }
}

然后我有一个登录框组件:

loginbox.component.html

<div class="wrapper fadeInDown">
  <div id="formContent" >

    <!--
    <div class="fadeIn first">
      <img src="http://danielzawadzki.com/codepen/01/icon.svg" id="icon" alt="User Icon" />
    </div>
    -->
    <div class="m-3">
      <h1>WigStat</h1>
      <form>
        <div class="mt-3">
          <input type="text" id="login" class="fadeIn second" name="login" placeholder="username">
        </div>
        <div class="mt-3">
          <input type="text" id="password" class="fadeIn third" name="login" placeholder="password">
        </div>
        <div class="mt-3">
          <input type="submit" class="fadeIn fourth mt-4 mb-4" value="Log In" (click)="loginClick()">
        </div>
      </form>
    </div>

    <!--
    <div id="formFooter">
      <a class="underlineHover" href="#">Forgot Password?</a>
    </div>
    -->

  </div>
</div>

loginbox.component.ts

import { Component, Input, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import Swal from 'sweetalert2';

@Component({
  selector: 'loginbox',
  templateUrl: './loginbox.component.html',
  styleUrls:['./loginbox.component.css']
})
export class LoginBoxComponent implements OnInit {
  
  @Input()
  clickLoginFunction!: () => void;
  
  private emailOrUsername!: String;;
  private password!: String;

  constructor() {
   }
  
  ngOnInit(): void {
  }

  loginClick(){
    console.log("LLamada a la funcion interna del componente de login");
    console.log(this.emailOrUsername);
    console.log(this.password);
    
    if(this.emailOrUsername === undefined || this.emailOrUsername === ''){
      this.showErrorModelInRegister('No se han introducido usuario');
      return;
    } else if (this.password === undefined || this.password === ''){
      this.showErrorModelInRegister('No se ha introducido password');
      return;
    }
    this.clickLoginFunction();
  }

  private showErrorModelInRegister(message:string){
    Swal.fire(message);
  }
}

应用程序路由.module.ts

import { LoginComponent } from './pages/login/login.component';
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './pages/home/home.component';
import { MainComponent } from './pages/main/main.component';

const routes : Routes = [
  {path: 'home', component: HomeComponent},
  {path: 'login', component: LoginComponent},
  {path: '**', pathMatch: 'full', redirectTo: '/login'}
]

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

当我加载主页时,它会显示以下内容

在此处输入图像描述

到目前为止一切顺利,但如果我按下登录按钮:

在此处输入图像描述

在此处输入图像描述

我不是角度方面的专家,但我知道基本知识,但我找不到有关正在发生的事情的信息。

提前致谢

4

1 回答 1

1

它的输出看起来很正常,您没有进行任何验证,因此当您单击按钮时,您将收到消息并且未定义emailOrUsernameandpassword变量。

我在这里注意到的一件事是,您必须对emailOrUsername和使用两种方式绑定password

首先导入FormsModule您的 AppModule。


    <div class="m-3">
      <h1>WigStat</h1>
      <form>
        <div class="mt-3">
          <input [(ngModel)]="emailOrUsername" type="text" id="login" class="fadeIn second" name="login" placeholder="username">
        </div>
        <div class="mt-3">
          <input  [(ngModel)]="password" type="password" id="password" class="fadeIn third" name="login" placeholder="password">
        </div>
        <div class="mt-3">
          <input type="submit" class="fadeIn fourth mt-4 mb-4" value="Log In" (click)="loginClick()">
        </div>
      </form>
    </div>

现在您将在 useremailOrUsernamepassword.

于 2021-08-30T17:08:07.147 回答