首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ValidationRules.ensure的Aurelia ValidationRules.ensure

使用ValidationRules.ensure的Aurelia ValidationRules.ensure
EN

Stack Overflow用户
提问于 2019-02-13 20:03:26
回答 1查看 543关注 0票数 1

我有一个用ES6和Babel创建的Aurelia项目,我正在尝试将它转换成TypeScript。

在代码的一个区域,我有这样的东西:

tenant.js

代码语言:javascript
复制
import {ValidationRules} from 'aurelia-validation'
export class Tenant{
    constructor(tenantObject){
        Object.assign(this, tenantObject);
    }
} 

ValidationRules
  .ensure(o => o.name).displayName("Tenant Name").required()
  ...
  .on(Tenant);

system.js (VM)

代码语言:javascript
复制
import {ValidationController} from 'aurelia-validation'
import {NewInstance} from 'aurelia-framework'
import {Tenant} from '../models/tenant'
import {BootstrapValidationRenderer} from 'elements/bootstrap-validation-renderer'

export class System{
    static inject = [DataService, NewInstance.of(ValidationController)]
    constructor(dataService, validationController){
       this.dataService = dataService
       this.validationController = validationController

       this.validationController.addRenderer(new BootstrapValidationRenderer())
    }

    async activate() {
       let data = await this.dataService.getTenant(1);
       this.tenant = new Tenant(data);
    }

    ...
}

system.html

代码语言:javascript
复制
...
<div class="form-group name" >
   <label for="pName" class="form-control-sm">Tenant Name</label>
   <input id="pName" type="text" autofocus class="form-control form-control-sm" value.bind="tenant.name & validate" />
</div>

但是,我现在在tenant.ts中得到一个错误,说明property 'name' does not exist on type {}

我尝试将name属性添加到Tenant中,但这似乎没有帮助。

有办法绕过这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-13 20:11:57

aurelia-validation 不会似乎有打字功能。因此,您必须断言类型如下:

代码语言:javascript
复制
ValidationRules
  .ensure((o: Tenant) => o.name).displayName("Tenant Name").required()
  ...
  .on(Tenant);

但在此之前,您应该将name属性添加到Tenant类中:

代码语言:javascript
复制
export class Tenant{
    public name: string = ''

    constructor(tenantObject){
        Object.assign(this, tenantObject);
    }
} 

即使aurelia-validation有类型,您仍然必须断言类型,因为它在方法链的末尾接受类名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54678543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档