【发布时间】:2017-10-02 08:38:25
【问题描述】:
我有一个反应式 Angular 表单。当页面加载表单时,已经检查了错误。
我正在尝试使用滚动到错误指令来滚动并关注错误 div,但表单永远不会去那里,它已经过验证。
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="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>
更新
现在我就是这样用的
<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>
事情是提交表单时会显示验证错误,我希望焦点和滚动移动到那里?请帮忙?
【问题讨论】:
标签: forms angular directive angular-reactive-forms