0

我正在尝试将包(ng-selector)从角度 4 更新到 5,但我无法让它正常工作。

据我了解,由于 Angular 5 仅从应用程序文件夹编译文件,要使用 node_modules 文件夹中的包,我的包需要公开 js 文件。

为了在我的包中公开 js 文件(到目前为止只公开了 ts 文件),我尝试了 tsc 和 ngc。这是问题所在:无论我使用什么编译器,我都不会收到编译错误。但是当我从 js 文件中导入我的包并尝试使用它时,我的控制台上总是会出现错误消息:

ERROR Error: No value accessor for form control with name: 'test1'

我知道在大多数情况下,此错误来自以下错误之一:

  • 我忘了包括 FormsModule
  • 我没有正确实现 ControlValueAccessor
  • 我没有使用提供者 NG_VALUE_ACCESSOR

我省去了你检查的麻烦,这里不是这样。我的包在 Angular 4 上运行良好。

这是我的打字稿文件的编译问题,因为如果我将包文件直接放入我的应用程序文件夹,更改导入(而不是从 node_modules 文件夹导入,我从本地包文件导入),那么一切正常。

如果有人想尝试我所做的,这里是重现步骤:

  1. git clone git@github.com:Orodan/ng-selector.git
  2. cd ng-选择器
  3. git checkout 开发
  4. npm 安装
  5. npm run build-tsc 或 npm run build-ngc 根据您要测试的编译
  6. cd ngSelectorDemo
  7. npm 安装
  8. npm 开始

我想我的编译设置做错了,但我找不到到底是什么。所以如果有人能帮忙

谢谢您的帮助 :)

4

1 回答 1

0

我遇到了同样的问题,在单包应用程序中没问题,但是当我将控件提取到一个单独的包中(使用汇总)时,它会抛出“No value accessor for form control with name: xxxx”错误。

如果我添加“ngDefaultControl”指令,错误消息就会消失,但我认为这是一种解决方法,而不是正确的解决方案。如果有人知道永久解决方案,请告诉我们。谢谢你。

于 2017-12-27T02:42:35.220 回答