【发布时间】:2019-07-06 10:14:35
【问题描述】:
我正在尝试创建一种行为,其中所有附加到 preventFormChangesLoss 指令的表单都将运行,以便如果表单发生更改(如果不是 pristine 或 submitted),则页面当用户想要离开时显示警告。
为此,我正在尝试获取我的指令以获取我的指令附加到的 NgForm 实例。 目前,我有
import { Directive, Input, ElementRef, OnInit, AfterViewInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
@Directive({
selector: '[preventFormChangesLoss]'
})
export class PreventFormChangesLoss implements OnInit, AfterViewInit {
private origin: string = '';
@ViewChild('myForm') form : NgForm;
constructor(private elRef: ElementRef) {
console.log(this.elRef);
}
ngOnInit() {
console.log(this.elRef, this.form);
}
ngAfterViewInit() {
console.log(this.elRef, this.form); // shows the native element, + 'undefined'
}
}
我把它和
一起使用<form preventFormChangesLoss #myForm="ngForm">
...
</form>
不幸的是,这不起作用,我还希望我的指令能够获取 NgForm 实例,而不必执行 #myForm="ngForm" 部分,这样我就可以随意命名我的表单并将这种行为分开。
我该怎么做,有人能指出我在文档中的正确位置吗?
【问题讨论】:
标签: angular typescript angular-directive angular-forms