我正在尝试实现此answer,因为我一直在尝试创建自己的自定义FormControl
,正如该问题中所详述的那样。
我创建了一个自定义ControlValueAccessor
,并将其作为valueAccessor
注入到我的FormControl
指令的构造函数中,但是当我尝试使用registerOnChange
注册回调时功能它永远不会被调用。
事实上,没有一个成员似乎被召唤。
我已经阅读了很多文章和博客文章,但无法解决我遗漏或做错的事情。
我已将plunkr从原始question扩展为演示here。
任何帮助或指示都将不胜感激。
目标就像能够@Component({..., template: '<input myFormControl...'}...
注册FormControls的另一个问题。
答案 0 :(得分:0)
你快到了:)。还有一个技巧。
您的自定义NgControl
未在setUpControl
的{{1}}内调用ngOnChanges
FormControlDirective
。这是因为您的自定义控件的@Inputs
未更改。此外,您不会在控件上使用任何输入。
但你可以手动运行它:
import { SimpleChange } from '@angular/core';
export class HybridFormControlDirective extends FormControlDirective {
/* @override */
constructor(...) {
super(validators, asyncValidators, valueAccessors);
this.form = new FormControl('');
this.form.patchValue('test2');
// manually call ngOnChanges to make sure that setUpControl is called
this.ngOnChanges({
form: new SimpleChange(undefined, this.form, true)
});
}
}
<强> is called 强>