'' angular2 没有值访问器
No value accessor for '' angular2
我正在使用 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],
})
我的问题和这个类似:
但在我的例子中,自定义组件来自第三方库 (PrimeNG),我无法控制它
抛出的错误表明它正在使用 angular common.umd.js 模块中的 ngModel,该模块已被弃用。它应该在新的 angular 表单模块中使用 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 下拉组件,您会发现它引用了新的 angular 表单。 Github: dropdown.ts
我的猜测是 p-dropdown 不支持此 [(ngModel)] 绑定,如何通过他们的文档来找出答案。
你能试试吗
[(value)]="your variable"
我正在使用 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],
})
我的问题和这个类似:
但在我的例子中,自定义组件来自第三方库 (PrimeNG),我无法控制它
抛出的错误表明它正在使用 angular common.umd.js 模块中的 ngModel,该模块已被弃用。它应该在新的 angular 表单模块中使用 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 下拉组件,您会发现它引用了新的 angular 表单。 Github: dropdown.ts
我的猜测是 p-dropdown 不支持此 [(ngModel)] 绑定,如何通过他们的文档来找出答案。 你能试试吗
[(value)]="your variable"