register (field, component) {
    if (has(component.$options.propsData, 'ignored')) {
      // Any presence of the `ignored` prop will ensure this input is skipped.
      return false
    }
    if (this.registry.has(field)) {
      // Here we check to see if the field we are about to register is going to
      // immediately be removed. That indicates this field is switching like in
      // a v-if:
      //
      // <FormulateInput name="foo" v-if="condition" />
      // <FormulateInput name="foo" v-else />
      //
      // Because created() fires _before_ destroyed() the new field would not
      // register because the old one would not have yet unregistered. By
      // checking if field we're trying to register is gone on the nextTick we
      // can assume it was supposed to register, and do so "again".
      this.ctx.$nextTick(() => !this.registry.has(field) ? this.register(field, component) : false)
      return false
    }
    this.add(field, component)
    const hasVModelValue = has(component.$options.propsData, 'formulateValue')
    const hasValue = has(component.$options.propsData, 'value')
    // This is not reactive
    const debounceDelay = this.ctx.debounce || this.ctx.debounceDelay || (this.ctx.context && this.ctx.context.debounceDelay)
    if (debounceDelay && !has(component.$options.propsData, 'debounce')) {
      component.debounceDelay = debounceDelay
    }
    if (
      !hasVModelValue &&
      this.ctx.hasInitialValue &&
      !isEmpty(this.ctx.initialValues[field])
    ) {
      // In the case that the form is carrying an initial value and the
      // element is not, set it directly.
      component.context.model = this.ctx.initialValues[field]
    } else if (
      (hasVModelValue || hasValue) &&
      !equals(component.proxy, this.ctx.initialValues[field], true)
    ) {
      // In this case, the field is v-modeled or has an initial value and the
      // registry has no value or a different value, so use the field value
      this.ctx.setFieldValue(field, component.proxy)
    }
    if (this.childrenShouldShowErrors) {
      component.formShouldShowErrors = true
    }
  }
Fully register a component.
@param {string} field name of the field.
@param {vm} component the actual component instance.