【问题标题】:Kendo NumericTextBox and MaskedTextBox AOT issueKendo NumericTextBox 和 MaskedTextBox AOT 问题
【发布时间】:2017-06-19 02:28:31
【问题描述】:

AOT 使用 Kendo Angular2 NumericTextBox 和 MaskedTextBox 编译项目时,出现以下错误:

  1. maskedtextbox.component.ngfactory.ts:275:35:提供的参数与调用目标的任何签名都不匹配。

  2. maskedtextbox.component.ngfactory.ts:279:35:提供的参数与调用目标的任何签名都不匹配。

  3. maskedtextbox.component.ngfactory.ts:283:35:提供的参数与调用目标的任何签名都不匹配。

  4. numerictextbox.component.ngfactory.ts:203:41:属性“widgetClass”是私有的,只能在“NumericTextBoxComponent”类中访问

  5. numerictextbox.component.ngfactory.ts:208:41:属性“numericClass”是私有的,只能在“NumericTextBoxComponent”类中访问

6.numerictextbox.component.ngfactory.ts:242:48:属性“hostBlur”受保护,只能在“NumericTextBoxComponent”类及​​其子类中访问。

这是我的 package.json 条目:

    "@angular/common": "2.4.0",
    "@angular/compiler": "2.4.0",
    "@angular/compiler-cli": "2.4.0",
    "@angular/core": "2.4.0",
    "@angular/forms": "2.4.0",
    "@angular/http": "2.4.0",
    "@angular/platform-browser": "2.4.0",
    "@angular/platform-browser-dynamic": "2.4.0",
    "@angular/platform-server": "2.4.0",
    "@angular/router": "3.4.0",
    "@progress/kendo-angular-buttons": "0.14.0",
    "@progress/kendo-angular-dialog": "0.14.1",
    "@progress/kendo-angular-dropdowns": "0.24.4",
    "@progress/kendo-angular-intl": "0.9.0",
    "@progress/kendo-angular-grid": "0.7.0",
    "@progress/kendo-angular-popup": "0.15.0",
    "@progress/kendo-angular-upload": "0.12.0",
    "@progress/kendo-data-query": "0.2.0",
    "@progress/kendo-popup-common": "0.3.0",
    "@progress/kendo-angular-inputs": "0.18.2",
    "@progress/kendo-theme-default": "2.11.4",
    "@telerik/kendo-dropdowns-common": "0.2.0",
    "@telerik/kendo-intl": "0.12.0",
    "@telerik/kendo-theme-default": "1.32.0",
    "@telerik/kendo-draggable": "1.5.1",
    "@telerik/kendo-inputs-common": "2.1.0",

AppModule 导入

import { DialogModule } from '@progress/kendo-angular-dialog';
import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
import { PopupModule } from '@progress/kendo-angular-popup';
import { IntlService } from '@progress/kendo-angular-intl';

另一个模块导入

import { GridModule } from '@progress/kendo-angular-grid';
import { UploadModule } from '@progress/kendo-angular-upload';
import { InputsModule } from '@progress/kendo-angular-inputs';

【问题讨论】:

    标签: kendo-ui-angular2


    【解决方案1】:

    得到同样的错误。我修改了文件 numerictextbox.component.d.ts 以从 3 声明中删除 private/protected。并将 widgetClass 和 numericClass 的类型设置为 any 以使 aot build 工作 这些可以忽略吗?

    错误在 App/aot/node_modules/@progress/kendo-angular-inputs/dist/es/numerictextbox/numerictextbox.component.ngfactory.ts:195:41:属性“widgetClass”是私有的,只能在“NumericTextBoxComponent”类中访问。 错误在 App/aot/node_modules/@progress/kendo-angular-inputs/dist/es/numerictextbox/numerictextbox.component.ngfactory.ts:200:41:属性“numericClass”是私有的,只能在“NumericTextBoxComponent”类中访问。 错误在 App/aot/node_modules/@progress/kendo-angular-inputs/dist/es/numerictextbox/numerictextbox.component.ngfactory.ts:214:48:属性“hostBlur”受保护,只能在“NumericTextBoxComponent”类及​​其子类中访问.

    【讨论】:

      【解决方案2】:

      我也遇到了这个问题(或非常相似的问题)。我无法运行我的应用程序的 JIT 版本(在 lite 服务器上使用“npm start”)或将应用程序构建为 AOT 版本。我什至没有在我的应用程序的任何地方使用蒙面文本框。我安装输入的唯一原因是滑块。

      无论如何,如果工厂组件中有问题,我可以理解导致错误的构建,但我不明白为什么运行 JIT 版本会是一个问题。也许因为 AOT 文件夹位于我的根 npm 安装的应用程序文件夹中,所以一切都在 npm start 上编译了 JIT?

      我能够通过删除以下文件来运行 JIT 版本:

      AOT\app
      AOT\@progres 
      AOT\@telerik
      

      但是我无法构建应用程序。当我尝试时,我得到以下信息:

      1. 错误 C:/Dashboard/aot/node_modules/@progress/kendo-angular-inputs/dist/es/slider/slider-ticks.component.ngfactory.ts:87:7: 提供的参数与调用目标的任何签名都不匹配。

      2. 错误 C:/0/Health/Dashboard-lite/aot/node_modules/@progress/kendo-angular-inputs/dist/es/slider/slider.component.ngfactory.ts:207:7: 提供的参数与调用目标的任何签名都不匹配。

      检查slider-ticks.component.ngfactory,错误如下:

      希望这有助于最终解决问题...

      【讨论】:

        【解决方案3】:

        为什么所有 Telerik 软件包?你可能不需要这些。你也可以分享你的 app.module.ts 文件吗?

        你应该只使用 @progress 包并在你的 app.module.ts 中声明它:

        import { InputsModule } from '@progress/kendo-angular-inputs';
        

        edit:回答太快了,它们是进度包的依赖项。但是,您不应该将它们放在您的 packages.json 中,因为它们会被 npm 作为依赖项自动安装。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多