Передача данных между двумя угловатыми формами

Я пытаюсь проверить модель формы1 из формы2. Как я могу заставить его работать? Вот jsbin, описывающий то, что я хотел бы иметь. http://jsbin.com/kuluhataka/edit?js,output


person krutkowski86    schedule 24.08.2015    source источник
comment
Также разместите здесь соответствующий код и любые конкретные проблемы, с которыми вы столкнулись, чтобы мы могли помочь вам с указанными проблемами. См. страницу Как задать вопрос, чтобы получить помощь в улучшении вашего вопроса.   -  person Madness    schedule 25.08.2015


Ответы (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>
person kentcdodds    schedule 26.08.2015
comment
Спасибо за ваше решение! Это то, что мне нужно. Посмотрите на этот пример angular-formly.com/#/example/other/ вложенные-формы-формы - вы используете здесь типы для полей, поэтому я делал это так ;-) - person krutkowski86; 28.08.2015