フォームを作成しています。前の条件(チェックボックスなど)に基づいて入力フィールドを必須にする必要があります。attr.requiredを "CONDITION"に設定しても何もチェックされません
属性がrequired
の要素に設定されている場合、必要な検証はうまくいきます。 [attr.required] = "CONDITION"でrequired
属性を設定すると、それはまったくチェックされません。
ここにplnkrサンプルがあります。https://plnkr.co/edit/vPfmgvLxUjNyNXHtkY24 (hero exampleのdocumentationから)。
コード(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>
[attr.required]ではなく[required]を使用してください。 –
質問は何ですか? Angularはrequiredのディレクティブを使用し、プロパティで設定した値に応じて内部的に属性を設定します。したがって、あなたは '[required] =" val "' https://github.com/angular/angular/blob/master/packages/forms/src/directives/validators.ts#L79 – yurzui