[英]Value Accessor issues on a radio button component
所以我試圖制作一個非常簡單和干凈的單選按鈕組件,它可以與值訪問器一起使用,用於常見的 angular forms 場景,使用FormsModule
, ReactiveFormsModule
並使用changeDetectionStrategy.OnPush
但我遇到了問題( s) 你可以在這個 Stackblitz上看到我得到了意想不到的結果,我知道這可能是我遺漏了一些東西,因為我已經很長時間沒有做定制收音機了。
當它第一次加載時,你會得到無線電輪廓但沒有標簽,直到你單擊某些東西並且writeValue
和onModelChange
是未定義的,而我得到一個No value accessor for form control with name:
錯誤。 所以可以使用另一雙眼睛,這樣我就可以使用具有良好'ol ngModel、formControlName、FormBuilder 的實例。
你會在 Stackblitz 中看到值訪問器在那里並實現了ControlValueAccessor
所以我有點困惑,因為我最近對另一個組件做了同樣的方法就好了。 我可以在這里復制/粘貼閃電戰的部分內容,但我認為這個例子應該足夠了,但如果不讓我知道的話。
我對您在Stackblitz上的代碼做了一些更改,請檢查並讓我知道它是否解決了您的問題。
以下是所做更改的摘要:
internalValue
的新 RadioButtonComponent 屬性,並使用它綁定到[ngModel]
。 還在writeValue()
方法中更新它的值。writeValue
中與this.checked
相關的代碼以及手動更新input
元素的checked
屬性。 這應該由 Angular Forms API 自動處理。[attr.checked]
綁定,而不是對name
和value
使用屬性綁定,只使用屬性綁定。[(ngModel)]
語法,以便在使用ngModel: {{testing}}
您也可以更改/調整其他內容,但希望上述更改能幫助您繼續前進。
providers: [RADIO_VALUE_ACCESSOR]
你的代碼中缺少這個。 您需要在組件裝飾器的提供者中添加它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.