我正在努力根据复选框选择有条件地验证IPV4和IPV6,另一个问题是我的IPV6正则表达式不正确。
我在SO上搜索了一些与IPV6正则表达式相关的答案,但对我的情况没有帮助。 我的有效IP V6如下:
1 ::
0000:0000:0000:0000:0000:0000:0000:0001
下面是我的TS代码:
import { Component,OnInit } from '@angular/core';
import { FormBuilder,FormGroup,Validators } from "@angular/forms"
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
networkForm:FormGroup
constructor(private newFormBuilder:FormBuilder){
}
ngOnInit(){
this.networkForm = this.newFormBuilder.group({
//ipv4 pattern.
ip:['',[Validators.pattern(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/),Validators.required]]
});
}
ipSelect(ipType:string){
///what to do here
if(ipType == "v4"){
}else{
}
}
}
对于条件验证,我知道要在FormGroup级别上设置的全局验证程序,或者知道要应用验证程序或删除验证程序的值更改订阅。因为我的表单中还有很多其他验证内容,所以这里没有提到。这就是我正在寻找其他好的方法的原因。如果有人建议。
下面是我的HTML代码:
<form [formGroup]="networkForm">
<input type="checkbox" value="v4" (click)="ipSelect($element.target.value,'v4')"/> IP V4<br/>
<input type="checkbox" value="v6" (click)="ipSelect($element.target.value,'v6')"/> IP V6<br/>
<input type="textbox" formControlName="ip"/>
{{networkFrom.controls.ip.errors | json}}
</form>
请帮助。