![](/img/trans.png)
[英]TypeError: Cannot read properties of null (reading '_rawValidators')
[英]angular ERROR TypeError: Cannot read properties of null (reading '_rawValidators')
我有以下 angular 代码并收到错误 TypeError: Cannot read properties of null (reading '_rawValidators')
import { Component, OnInit } from '@angular/core';
import { Wifi } from './wifi';
import { WifiService } from './wifi.service';
import { FormBuilder } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit{
title = 'angular-esp';
datalist: Array<Wifi> = [];
wifiSelected : Wifi = {} as Wifi;
psk = "";
ssid = "";
checkoutForm = this.formBuilder.group({
ssid: [''],
psk: ['']
});
constructor(private wifiservice: WifiService, private formBuilder: FormBuilder) { }
ngOnInit()
{
this.wifiservice.getWifiList().subscribe(wifilist => this.datalist = wifilist);
}
selected(){
this.ssid = this.wifiSelected.ssid;
}
onSubmit(): void {
this.wifiservice.connect(this.checkoutForm.value).subscribe();
}
}
跟随 html:
<form [formGroup]="checkoutForm" (ngSubmit)="onSubmit()">
<div class="section">
<select [(ngModel)]="wifiSelected" (select)="selected()">
<option *ngFor="let item of this.datalist" [ngValue]="item">{{item.ssid}}</option>
</select>
</div>
<div>
<input type="text" [(ngModel)]="ssid" formControlName="ssid">
</div>
<div [hidden]="wifiSelected.auth == 'WIFI_AUTH_OPEN'">
<input type="password" name="psk" [(ngModel)]="psk" formControlName="psk">
</div>
<div><button class="button" type="submit">connect</button></div>
</form>
<div>
{{wifiSelected | json}}
</div>
在页面加载时出现错误“错误类型错误:无法读取 null 的属性(读取‘_rawValidators’)”。
有什么建议吗?
如果我评论它工作的 formgroup 的一部分。
不要在表单中一起使用 ngModel 和表单控件。 不建议在表单组(反应式方法)中使用 ngModel(模板驱动方法)。 如果您更改它,希望它能解决问题。
当我在我的 IDE 中尝试你的代码时,我实际上得到了一个不同的错误,告诉我我不应该在表单中使用 ngModel。 然后我更改了 html 代码,错误消失了。 我认为您仍然需要为select
-control 添加formControlName
吗?
<form [formGroup]="checkoutForm" (ngSubmit)="onSubmit()">
<div class="section">
<select (select)="selected()">
<option *ngFor="let item of this.datalist" [ngValue]="item">{{item.ssid}}</option>
</select>
</div>
<div>
<input type="text" formControlName="ssid">
</div>
<div [hidden]="wifiSelected.auth == 'WIFI_AUTH_OPEN'">
<input type="password" name="psk" formControlName="psk">
</div>
<div><button class="button" type="submit">connect</button></div>
</form>
<div>
{{wifiSelected | json}}
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.