AngularJs Formly — динамически добавлять оболочку

У меня есть несколько типов полей, которые я создал. Они похожи друг на друга, за исключением того, что их оболочки различны. Один тип может нуждаться в чем-то, что не нужно другому (таким образом было создано несколько типов).

Можно ли передавать обертки типам полей? Может быть, что-то вроде этого:

vm.fields=[
    {
        key: 'name',
        type: 'fieldType1'
        wrappers: ['wrapper1', 'wrapper2']
    }
]

Я пытаюсь использовать наименьшее количество типов полей, чтобы поддерживать это в будущем. Если единственная разница между этими типами - это оболочка... Я надеюсь, что смогу внедрить нужные мне оболочки в тип, когда добавлю поле в свой массив полей.


person Holt    schedule 03.09.2015    source источник


Ответы (1)


Фактически вы можете определить wrapper как свойство поля (docs), вот так:

vm.fields=[
    {
        key: 'name',
        type: 'fieldType1'
        wrapper: ['wrapper1', 'wrapper2']
    }
]

(Обратите внимание, единственная разница между этим примером и вашим кодом в том, что он wrapper, а не wrappers).

Я понимаю (и приношу свои извинения), что имя сбивает с толку, но для чего оно стоит, вы можете указать строку или массив строк, поэтому в этом случае это имело бы смысл:

vm.fields=[
    {
        key: 'name',
        type: 'fieldType1'
        wrapper: 'wrapper1'
    }
]
person kentcdodds    schedule 03.09.2015
comment
Дох, wrapper имеет смысл. Должно быть, я просто слепо добавил «s», когда пытался понять это. Спасибо, Кент! - person Holt; 03.09.2015
comment
Кент, одна из оберток, которые я использую, делает пользовательские вещи с размещением метки. Это отлично работает с оболочкой внутри типа поля. Однако, когда я перемещаю оболочку внутри массива полей, метка отображается дважды (один раз из-за моей оболочки и один раз из-за метки по умолчанию, которая обычно добавляется). Есть ли хороший способ скрыть обычную метку от формы? Странно, что метка появляется после добавления оберток в массив полей. - person Holt; 03.09.2015
comment
Не берите в голову. Я думаю, что это происходило, потому что у типа поля больше не было оболочки (поэтому он использовал формальную метку по умолчанию). Если я устанавливаю оболочку в массиве полей, но все равно устанавливаю оболочку равной null в типе поля... все хорошо. - person Holt; 03.09.2015