これは有効なアプローチかどうかわかりませんが、これは私にとってはうってつけです。 HTML
<form [formGroup]="addUserForm" class="form mt-30" (ngSubmit)="updateUser(addUserForm)" accessible-form [form]="addUserForm"></form>
で
import { Directive, Input, HostListener, ElementRef } from '@angular/core';
import { NgForm } from '@angular/forms';
import * as $ from 'jquery';
@Directive({ selector: '[accessible-form]' })
export class AccessibleForm {
@Input('form') form: NgForm;
constructor(private el: ElementRef) {
}
@HostListener('submit', ['$event'])
onSubmit(event) {
event.preventDefault();
if (!this.form.valid) {
let target;
target = this.el.nativeElement.querySelector('.ng-invalid')
if (target) {
$('html,body').animate({ scrollTop: $(target).offset().top }, 'slow');
target.focus();
}
}
}
}
私はこれでangularjsアクセス可能な形式ディレクティブのアプローチを混合しています。 改善が歓迎されています!
後半の応答のため申し訳ありませんが、私はこれで行くのテストを取得します!お手伝いありがとう! –
jqueryなしでこれを行うにはどうすればいいですか? (よそまたは誰かを使用) –
さてあなたは、アニメーションなしで要素に移動することができ、または独自のカスタムアニメーション機能を書くことができます。これのようなもの(http://stackoverflow.com/questions/8917921/cross-browser-javascript-not-jquery-scroll-to-top-animation) – Baconbeastnz