私は反応角形をしています。ページが読み込まれると、フォームはすでにエラーがチェックされています。提出ボタンを押す前に角形が検証されるのはなぜですか?
エラーディレクティブにスクロールしてフォーカスするためにscroll to errorディレクティブを使用しようとしていますが、フォームは決してそこに行くわけではありません。
import { ElementRef, HostBinding, Input } from '@angular/core';
import { Directive } from '@angular/core';
@Directive({
selector: '[scrollTo]'
})
export class ScrollDirective {
constructor(private elRef:ElementRef) {}
@HostBinding('hidden') isError:boolean = false;
@Input() set scrollTo(cond) {
console.log(cond);
this.isError = cond;
if(cond) {
this.elRef.nativeElement.scrollIntoView();
this.elRef.nativeElement.focus();
}
}
}
私は、エラーをチェックしています場所ですが、それはすでに確認されていると私はそれの外scrollToを置く場合は、最初ににスクロールします。今、私はこの
<div class="col-md-4" [scrollTo] = "user.get('age').valid">
<md-input-container>
<input mdInput type="number" formControlName="age" placeholder="Age" validate-onblur>
</md-input-container>
</div>
のようなものを、それを使用しています
<div class="row">
<div class="col-md-12">
<span *ngIf="user.get('email').touched && !user.get('email').valid && !user.get('email').pristine">
<small [scrollTo] = "user.get('email').valid">Invalid email</small>
</span>
</div>
</div>
更新
は、上のフォームは、検証エラーが表示されます提出し、私はフォーカスとスクロールが移動するということですそこ ?助けてください ?
これを入力の上に置いてもらいたいのですか? – INFOSYS
投稿ボタンをクリックするとdosentが動作するようですが、 – INFOSYS
のように質問を更新しました。正しい要素にフォーカスを置くようにディレクティブを変更しましたか?あなたがdivとしてそれを残すなら、divはnativelementですが、フォーカスを受け取ることはできません。おそらく新しい属性で入力参照を渡すことができます – Vega