在两种角度形式之间传递数据

时间:2015-08-24 21:16:13

标签: angular-formly

我正在尝试从form2检查form1的模型。我怎样才能让它运转起来? 这是jsbin描述我想要的东西。 http://jsbin.com/kuluhataka/edit?js,output

1 个答案:

答案 0 :(得分:1)

我认真地建议不要做你想做的事情。类型应仅适用于字段,不适用于表单。使用角度来表示它擅长的东西,以及它擅长的形式。

另外需要注意的另一件事是expressionProperties仅在表单的给定模型发生更改时才会运行。这就是为什么在更改其他字段的值时未运行的原因(因为它们具有不同的模型属性)。

这是一个有效的解决方案:http://jsbin.com/resafa/1/edit?html,js,output

的JavaScript

vm.model = {
  form1: {},
  form2: {}
};
vm.fields1 = [
  {
    key:'field1',
    model: 'model.form1',
    type: 'input',
    templateOptions: {
      label: 'form1.Input',
      placeholder: 'Formly is terrific!'
    }
  },
  {
    key:'field1',
    model: 'model.form2',
    type: 'input',
    templateOptions: {
      label: 'form2.Input',
      placeholder: 'Formly is terrific!'
    },
    expressionProperties: {
      'templateOptions.disabled': '!options.data.originalModel.form1.field1',
    },
    // https://github.com/formly-js/angular-formly/pull/443
    // when that ^ PR gets merged and released, then you don't have to do this step
    // and you can reference it as `options.originalModel` rather than `options.data.originalModel`
    // This should happen in the next day or so
    data: {
      originalModel: vm.model
    }
  }
];

HTML

<form ng-submit="vm.onSubmit()" name="vm.form" novalidate>
  <formly-form model="vm.model" fields="vm.fields1" options="vm.options" form="vm.form">            
  </formly-form>
  <formly-form model="vm.model" fields="vm.fields2" options="vm.options" form="vm.form">
  </formly-form>
</form>