2016-09-27 78 views
1

對於我而言,[(ngModel)]="foo"不適用於用於恢復默認HTML5表單控件的標籤,更精確地說是單選按鈕。目標是使用這些來改變默認輸入無線電的值。我目前使用的是ng2-bootstrap,但也嘗試過紙質工具包(http://www.creative-tim.com/live/paper-kit)。angular2 - ngModel不能在標籤上工作(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)]是忽略並不傳播。使用paper-kit也會出現同樣的問題。

它正常工作在單選按鈕上,沒有任何問題。

+0

你想改變基於某些型號標籤的造型? – Tek

+0

不,我想使用該標籤作爲輸入來更改值,請參閱https://valor-software.com/ng2-bootstrap/#/buttons @ radios例如 – HyEnd

回答

0

您需要添加ButtonsModule到模塊的imports要使用它們

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

這可能會解決問題,如果systemjs會發現它,但我還是不明白,爲什麼ngModel不喜歡Paper-Kit中的其他標籤,但這是另一個討論 – HyEnd

+0

'ngModel'需要'ControlValueAccessor'在應用它的組件中實現(或由某些用於匹配選擇器的其他手段)。如果組件未正確導入,它們將不會在元素上實例化。如果它們沒有實例化,就沒有'ControlValueAccessor',因此'ngModel'不能被應用。 –

+0

所以這意味着如果我想使用例如paper-kit按鈕,我需要實現一個自定義的'ControlValueAccessor'? – HyEnd

相關問題