Aurelia ValidationRules.ensure 使用 TypeScript
Aurelia ValidationRules.ensure using TypeScript
我有一个使用 ES6 和 Babel 创建的 Aurelia 项目,我正在尝试将其转换为 TypeScript。
在一个代码区域,我有这样的事情:
tenant.js
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)
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
...
<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 {}
。
我尝试在 Tenant
中添加 name
属性 但这似乎没有帮助。
有办法解决这个问题吗?
aurelia-validation
does not好像有打字。因此你必须断言像这样的类型:
ValidationRules
.ensure((o: Tenant) => o.name).displayName("Tenant Name").required()
...
.on(Tenant);
但在此之前你应该添加 name
属性 到 Tenant
class:
export class Tenant{
public name: string = ''
constructor(tenantObject){
Object.assign(this, tenantObject);
}
}
P.S。 fwiw 即使 aurelia-validation
有类型,你仍然必须声明类型,因为它在方法链的最后接受 class 名称。
我有一个使用 ES6 和 Babel 创建的 Aurelia 项目,我正在尝试将其转换为 TypeScript。
在一个代码区域,我有这样的事情:
tenant.js
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)
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
...
<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 {}
。
我尝试在 Tenant
中添加 name
属性 但这似乎没有帮助。
有办法解决这个问题吗?
aurelia-validation
does not好像有打字。因此你必须断言像这样的类型:
ValidationRules
.ensure((o: Tenant) => o.name).displayName("Tenant Name").required()
...
.on(Tenant);
但在此之前你应该添加 name
属性 到 Tenant
class:
export class Tenant{
public name: string = ''
constructor(tenantObject){
Object.assign(this, tenantObject);
}
}
P.S。 fwiw 即使 aurelia-validation
有类型,你仍然必须声明类型,因为它在方法链的最后接受 class 名称。