2016-09-27 3 views
1

Для меня [(ngModel)]="foo" не работает в ярлыках, которые используются для управления стандартными форматами HTML5 формы, а точнее переключателями. Цель состоит в том, чтобы использовать их для изменения значений, таких как входные радиостанции по умолчанию. В настоящее время я использую ng2-bootstrap, но также попробовал бумажный набор (http://www.creative-tim.com/live/paper-kit).angular2 - ngМодель не работает с надписями (ng2-bootstrap, paper-kit)

При использовании документированного использования NG2-загрузчике (https://valor-software.com/ng2-bootstrap/#/buttons)

<label class="btn btn-primary" name="test" [(ngModel)]="foo" btnRadio="foo">foo</label> 

Я получаю эту ошибку:

core.umd.js:3468 Error: Uncaught (in promise): Error: No value accessor for form control with name: 'test' 
at resolvePromise (zone.js:429) 
at zone.js:465 
at ZoneDelegate.invokeTask (zone.js:236) 
at Object.onInvokeTask (core.umd.js:6233) 
at ZoneDelegate.invokeTask (zone.js:235) 
at Zone.runTask (zone.js:136) 
at drainMicroTaskQueue (zone.js:368) 
at XMLHttpRequest.ZoneTask.invoke (zone.js:308) 

Это может быть исправлено с помощью атрибута ngDefaultControl на этикетке, по-прежнему [(ngModel)] является игнорируется и не распространяется. Такая же проблема возникает при использовании бумажного набора.

Он работает на обычных переключателях без каких-либо проблем.

+0

Вы хотите изменить стиль этикетки, основываясь на какой-либо модели? – Tek

+0

Нет, я хочу использовать метку в качестве ввода для изменения значений, см. Https://valor-software.com/ng2-bootstrap/#/buttons @ radioios, например – HyEnd

ответ

0

Вам нужно добавить ButtonsModule к imports модуля, где вы хотите использовать их

@NgModule({ 
    imports: [ButtonsModule], 
    declarations: [...], 
    ... 
}) 
export class MyModule {} 
+0

, что, вероятно, устранит проблему, если systemjs найдет ее , Тем не менее, я не понимаю, почему ngModel не любит другие ярлыки, такие как те, что из Paper-Kit, но это еще одно обсуждение. – HyEnd

+0

'ngModel' требует, чтобы' ControlValueAccessor' был реализован в компоненте, где он применяется (или предоставляется некоторыми другие средства для селектора соответствия). Если компоненты не импортированы должным образом, они не будут создаваться на элементах. Если они не создаются, нет 'ControlValueAccessor', поэтому' ngModel' не может быть применен. –

+0

, поэтому это означает, что если я хочу использовать, например, кнопки набора бумаги, мне нужно реализовать пользовательский «ControlValueAccessor»? – HyEnd