我正在使用Angular2 rc.4和PrimeNg 1.0.0.beta.9,我收到此错误:
platform-browser.umd.js:1900 Error: No value accessor for ''
at new BaseException (common.umd.js:836)
at _throwError (common.umd.js:3516)
at setUpControl (common.umd.js:3493)
at NgModel.ngOnChanges (common.umd.js:4103)
at DebugAppView._View_ItemComponent1.detectChangesInternal (ItemComponent.template.js:1266)
at DebugAppView.AppView.detectChanges (core.umd.js:12143)
at DebugAppView.detectChanges (core.umd.js:12247)
at DebugAppView.AppView.detectContentChildrenChanges (core.umd.js:12161)
at DebugAppView._View_ItemComponent0.detectChangesInternal (ItemComponent.template.js:688)
at DebugAppView.AppView.detectChanges (core.umd.js:12143)
所有使用[(ngComponent)]的PrimeNG组件都会发生这种情况,例如p-dropdown指令:
<p-dropdown [options]="items" [(ngModel)]="item"></p-dropdown>
我已经完成了Angular2教程和PrimeNG展示,直到现在一切正常,这是我遇到的第一个无法解决的问题。
如果我只删除部分
[(ngModel)]=...
即使我的项目列表显示错误也没有显示,组件也正确显示。
在我的component.ts文件中,我已经注射了指令,就像我已经和其他几个人一样:
import {SelectItem, Dropdown} from 'primeng/primeng';
...
@Component({
...
directives: [Dropdown],
})
我的问题与此类似: ngmodele-no-value-accessor-for
但在我的情况下,自定义组件来自第三方库(PrimeNG)并且我无法控制它
答案 0 :(得分:1)
抛出的错误表明它正在使用角度common.umd.js模块中已弃用的ngModel。它应该在新的角度表单模块中使用ngModel。尝试在main.ts中禁用已弃用的表单。
示例:
import {bootstrap} from '@angular/platform-browser-dynamic';
import {App} from './app';
import { provideForms, disableDeprecatedForms } from '@angular/forms';
bootstrap(App, [provideForms(),
disableDeprecatedForms()])
.catch(err => console.error(err));
编辑:忘记添加...如果您查看PrimeNG下拉组件,您会看到它正在引用新的角形式。 Github:dropdown.ts
答案 1 :(得分:0)
我的猜测是p-dropdown不支持这个[(ngModel)]绑定,如何通过他们的文档来查找。 你能试试吗
[(value)]="your variable"