我尝试过其他解决方案,例如修复表单引用,但这对我没有帮助。这是我的登录表单
< form [formGroup] =“longinForm”(ngSubmit)=“onSubmit()”> < h1>登录…
您需要构建表单控件,您已定义它,但您需要类似以下内容。您需要初始化表单组。
import { NgForm, FormGroup, FormBuilder } from '@angular/forms'; //Be sure to import formBuilder and inject through constructor. This will allow you //to manage how you will build the form and add validation. //Its a helper class provided by Angular to help us explicitly declare forms. constructor( private formBuilder: FormBuilder ){} public ngOnInit(): void { this.loginForm = this.formBuilder.group({ username: ['', Validators.required], password: ['', Validators.required] });
您可以在此处定义表单组的控件和验证程序。 (这个例子只是要求每个都有一个值才能有效。这应该建立在 ngOnInit 。
ngOnInit
然后在您的模板中,您可以删除 [(ngModel)] 并使它看起来像以下。当您需要访问它时,输入的值将保留在控件中。
[(ngModel)]
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()"> <input type="text" name ="user" [formControlName]="'username'" class="form-control" required> <form>
以上将作为登录用户名/电子邮件的示例。 同样如评论中所述,您在HTML中的表单中有拼写错误。
当您尝试访问时,这应该是有效的 valid 和 invalid 来自组的属性。如果您有任何问题,请评论。
valid
invalid
这是反应形式的Angular文档 。
你怎么做
ngAfterViewInit() { this.onSubmit() }
我认为它还没有在ngOninit中定义。 检查生命周期。