IP V4和V6有条件地以角反应形式进行验证

时间:2019-01-09 09:37:03

标签: angular angular-reactive-forms

我正在努力根据复选框选择有条件地验证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>

请帮助。

0 个答案:

没有答案