我已经构建了一个自定义表单控件,如何在 onInit 生命周期钩子中订阅它的自定义事件?

问题描述

我的自定义表单控件有一个“optionChanged”事件,如下所示:

@Component({
  selector: 'app-formly-company-search',templateUrl: './formly-company-search.component.html',styleUrls: ['./formly-company-search.component.scss']
})
export class FormlyCompanySearchComponent extends FieldType implements OnInit {
  label: string;
  @Output() optionChanged = new EventEmitter<string>();
  constructor() {
    super();
  }

  ngOnInit() {
    this.label = this.field.templateOptions.label;

    if (this.field.templateOptions.required) {
      this.label += " *";
    }
  }

  onoptionChanged(option) {
    //console.log("new option: ",option);
    this.field.templateOptions.optionChanged(option);
  }
}

通过在上面的 templateOptions 中调用 optionChanged,当我在 FormlyFieldsConfig 中定义控件时,我可以实现一个事件处理程序,如下所示:

this.fields = [
  {
    fieldGroup: [
      {
        key: 'EmployerKey',type: 'company-search',templateOptions: {
          required: true,label: 'Employer Search',optionChanged: ($event) => {
            this.setPaySchedulesForEmployer2($event);
            this.setTaxYearsForEmployer($event);
          }
        }
      },

效果很好。但我也想在一个 onInit 生命周期钩子中订阅这个事件(就像我对 valueChanges 事件所做的那样),用于另一个像这样的正式控件:

      {
        key: 'PayFrequency',type: 'select',templateOptions: {
          label: 'Pay Frequency',valueProp: 'Key',labelProp: 'Text'
        },hooks: {
          onInit: (field: FormlyFieldConfig) => {
            let employerControl = this.form.get("EmployerKey");
            this.subs.add(employerControl.optionChanged.subscribe(result => {
              this.onEmployerChanged(field);
            }));
          }
        }
      },

当然,“employerControl”FormControl 没有那个事件“optionChanged”,所以我不知道我该怎么做?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...