私の申請書には登録フォームがあります。ただし、この登録フォーム内には、オプションの「パスワード」および「パスワードの繰り返し」入力があります。これらの2つの値を取得するためにFormControl
オブジェクトを使用したくないので(他の値でも構いません)、<form>
内でngModel
を使用するための回避策が必要です。
TS:
public password: string = '';
public passwordRe: string = '';
public registrationForm;
constructor(public fb: Formbuilder) {
this.registrationForm = this.fb.group({
'firstname' : [null, Validators.required],
'lastname': [null, Validators.required]
});
}
HTML
<form [formGroup]="registrationForm" (ngSubmit)="doSomething()">
<div class="form-group"
[ngClass]="{'has-error':!registrationForm.controls['firstname'].valid
&& registrationForm.controls['firstname'].touched}">
<label>Firstname: *</label>
<input class="form-control" type="text" placeholder="Firstname" [formControl]="registrationForm.controls['firstname']"/>
</div>
<div class="form-group"
[ngClass]="{'has-error':!registrationForm.controls['lastname'].valid
&& registrationForm.controls['lastname'].touched}">
<label>Lastname: *</label>
<input class="form-control" type="text" placeholder="Lastname" [formControl]="registrationForm.controls['lastname']"/>
</div>
<!-- NG MODELS -->
<input type="password" [(ngModel)] = "password"/>
<input type="password" [(ngModel)] = "passwordRe" />
<input type="submit" value="Some submit button"/>
</form>
このページは、セレクタを介して子として複数のページに表示されます。フォームの外側の一番上にパスワードを配置するのが最も手間のかかるソリューションですが、それを得るにはいくつかのコードを変更する必要があります。 (さらに見栄えがよくありません)したがって、この特定の問題の回避策があるかどうか疑問に思っていました。
基本的に、使用しているngModelがスタンドアロンであることを指定できます。そして、このようなものを使用してください
<input type="password" [(ngModel)] = "password" [ngModelOptions]="{standalone: true}" />
<input type="password" [(ngModel)] = "password" [ngModelOptions]="{standalone: true}" />
属性を提供する場合:
formControlName = "ここにフォームコントロール名"
入力では、そのように共存できます。
<input type="password"
[(ngModel)] = "password"
formControlName = "password"/>
formControlName
は、FormGroupで指定された名前と一致する必要があります
this.formGroup = this._formBuilder.group({
'password': new FormControl(this.password, [
Validators.required,
Validators.minLength(4)
])
});