Angular 2模板驱动的表单和状态更改
我想知道是否有可能访问Angular 2模板驱动表单中的Angular 2模板驱动的表单和状态更改,angular,angular-forms,Angular,Angular Forms,我想知道是否有可能访问Angular 2模板驱动表单中的statusChanges 我尝试了这个答案提供的方法,但不起作用。 我应该将表单重构为反应式的,还是可以使用另一种方法在表单验证状态更改时发出事件 __ 当前不起作用的方法: 组件内TS export class FormComponent implements OnInit { [...] @ViewChild('myForm', { static: false }) myForm; ngAfterVie
statusChanges
我尝试了这个答案提供的方法,但不起作用。
我应该将表单重构为反应式的,还是可以使用另一种方法在表单验证状态更改时发出事件
__
当前不起作用的方法:
组件内TS
export class FormComponent implements OnInit {
[...]
@ViewChild('myForm', { static: false }) myForm;
ngAfterViewInit() {
let c = this.myForm.statusChanges.subscribe(() => {
console.log(this.myForm.status, "Is form dirty yet: " + this.myForm.dirty);
});
}
组件内模板
<form #myForm>
[...]
</form>
[...]
我得到一个错误类型错误:无法读取未定义的属性'subscribe'
在FormComponent.ngAfterViewInit(form.component.ts:27)
(也定义了this.myForm,但没有属性
statusChanges
)问题是您获得了对名为myForm的元素的引用,而不是对该元素承载的NgForm指令的引用
将'myForm'
更改为NgForm
,或使用read:NgForm
选项
@ViewChild('myForm', { read: NgForm, static: false })
myForm: NgForm;
ngAfterViewInit() {
this.myForm.statusChanges.subscribe(e => console.log('status changed: ' + e));
}
另外请注意,您的组件应该在ViewInit之后实现
如果您希望对表单进行更多的编程控制,我强烈建议您切换到反应式表单。@xdecdec这是其他人正在处理的表单的一个巨大重构,我想知道是否可以避免重构。定义“不起作用”。发布一个完整的最小的例子来重现这个问题。非常感谢,我正在努力解决这个问题。