2017-10-02 5 views
1

フォームを作成しています。前の条件(チェックボックスなど)に基づいて入力フィールドを必須にする必要があります。attr.requiredを "CONDITION"に設定しても何もチェックされません

属性がrequiredの要素に設定されている場合、必要な検証はうまくいきます。 [attr.required] = "CONDITION"でrequired属性を設定すると、それはまったくチェックされません。

ここにplnkrサンプルがあります。https://plnkr.co/edit/vPfmgvLxUjNyNXHtkY24hero exampledocumentationから)。

コード(relevent一部):

<form #heroForm="ngForm"> 
     <div class="form-group"> 
     <label for="name">Required label Test</label> 
     <input type="checkbox" class="form-control" [(ngModel)]="cbReqired" name="cbReqired" id="cbReqired"> 
     </div> 

     <div [hidden]="!cbReqired">Now the Textbox should be required! (<code>required="true"</code> is set!)</div> 

     <div class="form-group"> 
     <label for="name">Name</label> 
     <input id="name" name="name" class="form-control" [attr.required]="cbReqired" [(ngModel)]="hero" #name="ngModel"> 

     <div *ngIf="name.invalid && (name.dirty || name.touched)" class="alert alert-danger"> 

      <div *ngIf="name.errors.required"> 
      Name is required. 
      </div> 
     </div> 
     </div> 

     <button type="submit" class="btn btn-default" [disabled]="heroForm.invalid">Submit</button> 
     <button type="button" class="btn btn-default" (click)="heroForm.resetForm({})">Reset</button> 
    </form> 
+0

[attr.required]ではなく[required]を使用してください。 –

+0

質問は何ですか? Angularはrequiredのディレクティブを使用し、プロパティで設定した値に応じて内部的に属性を設定します。したがって、あなたは '[required] =" val "' https://github.com/angular/angular/blob/master/packages/forms/src/directives/validators.ts#L79 – yurzui

答えて

1

あなただけ[required]の代わり[attr.required]を使用する必要があります。 https://plnkr.co/edit/B6dM2BvD3hMH3Skv6uy5?p=preview

+1

大丈夫です...を使う必要がありますそれは動作し、単純だった..うわー:D(私はそれを受け入れることができますまで7分) – Stefan

+0

素晴らしい!しかし、私は本当に知りません、なぜ[[attr.required] 'は動作しません... –

+0

誰かが知っているなら、私は受け入れられた答えを切り替えるかもしれません:) – Stefan

関連する問題