4

我使用Nebular创建登录表单。但 Nebular 的形式使用电子邮件验证。我想禁用电子邮件验证,因为我的网站使用username.

在此处输入图像描述

4

1 回答 1

5

我不相信有一个简单的配置选项可以更改user登录表单的属性。如果您查看登录表单的来源,您会发现user它只是一个类型的对象any。这意味着您可以扩展 并将字段的绑定NbLoginComponent更改为。(请参阅下面的工作堆栈闪电战)。[(ngModel)]emailusername

您必须创建自己的登录组件,扩展NbLoginComponent. 对于自定义登录组件,您不需要ts文件中的任何内容,您只需提供一个新模板并继承NbLoginComponent. 在模板中,您可以更改电子邮件输入的模型绑定并从输入中删除电子邮件验证 ( pattern=".+@.+\..+")。

用户名-login.component.ts

import { Component } from '@angular/core';
import { NbLoginComponent } from '@nebular/auth';

@Component({
  selector: 'username-login',
  templateUrl: './login.component.html',
})
export class UsernameLoginComponent extends NbLoginComponent {
}

用户名-login.component.html

... omitted
<form (ngSubmit)="login()" #form="ngForm" aria-labelledby="title">

  <div class="form-control-group">
    <label class="label" for="input-email">Email address:</label>
    <input nbInput
           fullWidth
           [(ngModel)]="user.username"
           #username="ngModel"
           name="username"
           id="input-username"
           placeholder="Username"
           fieldSize="large"
           autofocus
           [status]="username.dirty ? (username.invalid  ? 'danger' : 'success') : 'basic'"
           [required]="getConfigValue('forms.validation.username.required')"
           [attr.aria-invalid]="username.invalid && username.touched ? true : null">
    <ng-container *ngIf="username.invalid && username.touched">
      <p class="caption status-danger" *ngIf="username.errors?.required">
        Username is required!
      </p>
    </ng-container>
  </div>
  ...
</form>

然后在您的路由中,只需路由到您的自定义登录组件

应用程序路由.module.ts

const routes: Routes = [
  {
    path: '',
    redirectTo: 'auth',
    pathMatch: 'full',
  },
  {
    path: 'auth',
    component: NbAuthComponent,
    children: [
      {
        path: '',
        component: UsernameLoginComponent,
      }
    ],
  },
];

在下面的 stackblitz 中,我有一个工作示例。按下登录按钮后,我有一个警报,显示在发布请求中发送的对象。您还可以在开发工具的 Network 选项卡中检查请求以查看请求正文。

STACKBLITZ:https ://stackblitz.com/edit/nebular-dynamic-auth-api-laoksx

https://github.com/akveo/nebular/tree/master/src/framework/auth/components

https://akveo.github.io/nebular/docs/auth/custom-auth-components#create-auth-module

于 2020-01-21T12:23:12.623 回答