Я не верю, что есть простая опция конфигурации для изменения свойств user
формы входа. Если вы посмотрите на источник формы входа , вы увидите, что user
- это просто объект типа any
. Это означает, что вы можете расширить NbLoginComponent
и изменить привязку [(ngModel)]
для поля email
на username
. (см. ниже рабочий стек стека).
Вам нужно будет создать свой собственный компонент входа, расширяющий NbLoginComponent
. Для пользовательского компонента входа в файл ts
вам ничего не нужно, вы только предоставляете новый шаблон и наследуете все функции NbLoginComponent
. В шаблоне вы можете изменить привязку модели для ввода Email и удалить подтверждение ввода (pattern=".+@.+\..+"
) из ввода.
username-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 {
}
username -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>
Затем в ваших маршрутах просто проложите маршрут к пользовательскому компоненту входа в систему
app-routing.module.ts
const routes: Routes = [
{
path: '',
redirectTo: 'auth',
pathMatch: 'full',
},
{
path: 'auth',
component: NbAuthComponent,
children: [
{
path: '',
component: UsernameLoginComponent,
}
],
},
];
В приведенном ниже стекаблице у меня есть рабочий пример. После нажатия кнопки «Войти» у меня появляется предупреждение об объекте, который отправляется в запросе на публикацию. Вы также можете проверить запрос на вкладке Сеть инструментов разработчика, чтобы увидеть тело запроса.
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-модуль