angular8 - Angular 8 - 表单组值始终为空
问题描述
我是 Angular 新手,我从一个简单的登录表单开始。然而,表单值总是显示为空 - 即使在表单提交之前已经输入了值。
我创建了一个登录组件,该组件被导入到 app 模块中。页面出现,但提交不携带任何值。我已经删除了所有用于调试的 Angular 验证检查,但在我的 onsubmit 函数中收到的值仍然是空的。
我已经粘贴了组件代码。下面。
login.component.html
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()">
<div class="form-group" >
<div class="form-group">
<input type="email" class="form-control" formcontrolname="username"
placeholder="Email Id" required autofocus/><br/>
</div>
<div class="form-group">
<input type="password" class="form-control" formcontrolname="password" placeholder="Password" required/><br/>
</div>
<div class="form-group">
<button>Login</button>
<a href="/public/register" class="btn" >Register</a>
</div>
应用程序组件
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { LoginComponent } from './login/login.component';
@NgModule({
imports: [ BrowserModule, AppRoutingModule, FormsModule,
ReactiveFormsModule ],
declarations: [ AppComponent, HelloComponent, LoginComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
登录组件.ts
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
loginForm: FormGroup;
submitted = false;
returnUrl = '';
constructor(
private formBuilder: FormBuilder,
private router: Router
) {
}
ngOnInit() {
this.loginForm = this.formBuilder.group ({
username: ['', Validators.required],
password: ['', Validators.required]
});
}
get user() { return this.loginForm.controls; }
onSubmit() {
// stop if form is invalid
/* if (this.loginForm.invalid) {
console.log("Returning");
return;
} */
this.submitted = true;
console.log('login values:');
console.log(this.user.username.value, this.user.password.value);
this.returnUrl='/home';
// this.router.navigate([this.returnUrl]);
}
}
解决方案
你可以试试这个:
get user() { return this.loginForm.value; }
推荐阅读
- java - 如何在 Apache POI XSSFChart 中旋转文本标签
- mysql - Optional relation on MySQL RDB with foreign keys using AWS Appsync
- reactjs - ReactJS 正确使用有状态和无状态组件的方法?
- scala - Spark DataFrame向Ignite写数据(2.7.5)总是报错
- javascript - 使用javascript在不同端口上的不同apache服务器上运行的两个应用程序之间的通信
- python - 在 pandas 1.0.1 中使用“datetime64 [ns, UTC]”采样的 groupby 行为不正确?
- angular - 如何避免在日期选择器字段中输入字母?
- hadoop - 如何在 Java 代码中获得 HDFS 可用空间?
- amazon-web-services - 如何将 linux 日志文件直接发送到 S3(从而绕过 CloudWatch)
- postgresql - 更改 postgres 表中的列顺序