【问题标题】:Inner Error: Message: controllerFactory.createForCurrentScope is not a function内部错误:消息:controllerFactory.createForCurrentScope 不是函数
【发布时间】:2018-09-06 22:13:48
【问题描述】:

我在 aurelia 视图模型中收到上述错误

内部错误:消息:controllerFactory.createForCurrentScope 不是 功能

这是代码,

export class UpdateClient {
    public httpClient: HttpClient;
    public router: Router;
    public clientHelper: ClientHelper;
    public validator: Validator;
    public canSave: boolean;
    public controller: ValidationController;    
    public client: Client ;

 constructor(httpClient: HttpClient, router: Router, clientValidator: ClientValidator, clientHelper: ClientHelper, controllerFactory: ValidationControllerFactory, validator: Validator) {
        this.httpClient = httpClient;
        this.clientHelper = clientHelper;
        this.router = router;
        this.client = new Client
        this.controller = controllerFactory.createForCurrentScope(validator);
        clientValidator.validate(this.client, clientHelper);
}

【问题讨论】:

  • 您最近是否更新了任何依赖项?您是否为此目的使用 npm?如果两个答案都是肯定的 - 然后删除 package.lock.json 和 npm i
  • 我认为是 TS 的语言/捆绑程序/加载器上也缺少一些信息,但在您的课程中没有看到 @autoinject..
  • 不,如果我删除 clientvalidator.validate 就可以了

标签: validation typescript aurelia


【解决方案1】:

您需要在您的 UpdateClient 类上拥有 @autoinject() 或任何其他装饰器,才能正确发出类型元数据。

ValidationControllerFactory 在 DI 中注册为模块文件中的解析器,因此只需导入它(你有它,否则你会得到一个类型错误)应该会给你正确的东西。

您可能需要仔细检查您的 tsconfig.json 中的 experimentalDecoratorsemitDecoratorMetadata 是否设置为 true。

还要确保您在 main.ts 中注册验证插件,如下所示:

aurelia.use.plugin(PLATFORM.moduleName('aurelia-validation'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2021-12-16
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    相关资源
    最近更新 更多