2016-11-14 2 views
1

양식 그룹 유효성 검사에서 입력 최대 길이를 적용하려고 시도하지만 최대 길이는 양식의 다른 작업에 따라 다릅니다. 변수가 변경되면 maxMsgLength 속성의 값도 변경하십시오.각도 2의 maxLength 값을 동적으로 변경 Validators.maxLength

MSG : ', Validators.maxLength (this.maxMsgLength)]

maxMsgLength 그러나, 이전 maxMsgLength 값 발리 스틱 변경 후의. 이 유효성 검사 필드에 대한 유효성 검사를 maxLength의 새 값으로 다시 시작하는 방법이 있습니까?

코드 : 클래스 계정 { maxMsgLength = 200; newAccount : FormGroup;

//activated by click on another method 
    private changeMaxMsgLength() : void { 
    let values = Object.values(this.accountsStorage); 
    if(values.includes("oldAccount")) { 
     this.maxMsgLength = 150; 
    } else { 
     this.maxMsgLength = 200; 
    } 
    } 

    ngOnInit(): void { 
    this.newAccount = this.formbuilder.group({ 
     msg   : ['', Validators.maxLength(this.maxMsglength)], 
     link  : ['', Validators.pattern('^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$')], 
     schedule : ['', Validators.pattern('^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]$')] 
    }); 

    } 

} 
//where in template there is 


<div class="form-group"> 
    <label for="name">Message</label> 
    <textarea class="form-control" id="Message" formControlName="msg" style="width: 300px; height: 150px;"></textarea> 
</div> 
<div class="error" *ngIf="newAccount.get('msg').hasError('maxlength')"> 
    Maximum of {{maxMsglength}} characters 
</div> 
+0

는 또한 케이 업데이트 maxMsgLenth 값과 새로운 설정 '작업 this.newAccount.controls ['MSG '] updateValueAndValidity() ; –

답변

0

답을 찾을! : D, AbstractControl에서 메소드 setValidators를 사용해야.

newAccount.controls['msg'].setValidators(Validators.maxLengt‌h(this.maxMsglength)‌​) 

방법은 이전의 검증을 overites 및

0

당신은 그것을 위해 당신의 HTML 입력의 maxlength 속성을 사용할 수 있습니다 :

<input [attr.maxlength]="maxMsgLength" />