没有价值访问者的'' angular2

时间:2016-07-01 15:15:10

标签: angular primeng

我正在使用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)并且我无法控制它

2 个答案:

答案 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"