【问题标题】:No value accessor for '' angular2'' angular2 没有值访问器
【发布时间】:2016-11-04 01:36:09
【问题描述】:

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

【问题讨论】:

标签: angular primeng


【解决方案1】:

抛出的错误表明它正在使用已弃用的 Angular common.umd.js 模块中的 ngModel。它应该在新的 angular forms 模块中使用 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

【讨论】:

  • 非常感谢,它解决了问题,你救了我一天!
  • 我已禁用 formdeprecated 但仍然面临同样的问题?还有什么需要做的吗?
【解决方案2】:

我的猜测是 p-dropdown 不支持这个 [(ngModel)] 绑定,如何通过他们的文档找出来。 可以试试吗

[(value)]="your variable"

【讨论】:

  • 绑定正确,来自官方文档:&lt;p-dropdown [options]="cities" [(ngModel)]="selectedCity"&gt;&lt;/p-dropdown&gt;link
  • 是的,你可能是对的,但是如何解决这个问题?如何将([value)]与primeng中的值绑定?
  • 通过应用您的解决方案,它会给我们错误cannot read property of push of undefined ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
相关资源
最近更新 更多