【问题标题】:Angular - show/hide form based on actionAngular - 基于动作显示/隐藏表单
【发布时间】:2017-12-29 19:14:03
【问题描述】:


我正在使用Angular 4 实现一个简单的登录/注册应用程序。我想要实现的是让默认视图显示登录表单,并且只有当我单击 Register 链接时,我才想显示注册表单,它必须替换登录表单。
现在我必须点击 Login 链接来显示它。我会粘贴一些代码。

应用模块

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule }   from '@angular/forms';
import { RouterModule }   from '@angular/router';

import { AppComponent } from './components/app/app.component';
import { LoginComponent } from './components/login/login.component';
import { RegisterComponent } from './components/register/register.component';
import { HomeComponent } from './components/home/home.component';
import { UserService } from './services/user/user.service';
import { User } from './services/user/user';

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    RouterModule.forRoot([
      {
        path: 'login',
        component: LoginComponent
      },
      {
        path: 'register',
        component: RegisterComponent
      },
      {
        path: 'home',
        component: HomeComponent
      }
    ])
  ],
  declarations: [
    AppComponent,
    LoginComponent,
    RegisterComponent,
    HomeComponent
  ],
  providers: [UserService, User],
  bootstrap: [AppComponent]
})

export class AppModule { }

应用组件模板

<div id="container">
  <div id="parent">
    <div id="left"></div>
    <div id="right">
      <nav>
        <a routerLink="/login" routerLinkActive="active">Login</a>
        <a routerLink="/register" routerLinkActive="active">Register</a>
      </nav>
      <router-outlet></router-outlet>
    </div>
  </div>
</div>

登录组件模板

<form #loginForm="ngForm" (ngSubmit)="onSubmit(loginForm)">
  <div>
    <label for="username">Username</label>
    <input id="username" name="username" ngModel #username="ngModel">
  </div>
  <div>
    <label for="password">Password</label>
    <input id="password" name="password" ngModel #password="ngModel">
  </div>
  <span *ngIf="onSubmit(loginForm)">true</span>
  <button>Login</button>
</form>

注册组件模板

<form #registerForm="ngForm" (ngSubmit)="onSubmit(registerForm)">
  <div>
    <label for="name">Nome</label>
    <input id="name" name="name" ngModel #name="ngModel">
  </div>
  <div>
    <label for="lastName">Cognome</label>
    <input id="lastName" name="lastName" ngModel #lastName="ngModel">
  </div>
  <div>
    <label for="username">Username</label>
    <input id="username" name="username" ngModel #username="ngModel">
  </div>
  <div>
    <label for="password">Password</label>
    <input id="password" name="password" ngModel #password="ngModel">
  </div>
  <div>
    <label for="passwordRep">Ripeti la password</label>
    <input id="passwordRep" name="passwordRep">
  </div>
  <button>Registrati</button>
</form>

我缺少一些 Router Module 设置吗?
提前致谢。

【问题讨论】:

    标签: javascript angular typescript


    【解决方案1】:

    在您的路由中,如果您希望将其作为默认视图,您需要将用户redirect 转到login 页面。所以尝试以下方法:

    RouterModule.forRoot([
      { 
        path: '',
        redirectTo: 'login',
        pathMatch: 'full'
      }, 
      {
        path: 'login',
        component: LoginComponent
      },
      {
        path: 'register',
        component: RegisterComponent
      },
      {
        path: 'home',
        component: HomeComponent
      }
    ])
    

    【讨论】:

    • 谢谢,这正是我所需要的。
    • 不客气,很高兴听到它符合您的需求!祝您度过愉快的一天,并享受愉快的编码! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-11-01
    • 1970-01-01
    • 2012-09-18
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多