我有一个自定义组件,它将对象传递给该组件的viewmodel。这是使用打字稿。该对象到达构造函数,但它被knockout包装在一个匿名对象中。
有没有办法防止这种情况,只是获取强类型值对象?
在构造函数中,我得到了这个:
我想立即获得价值/订单。
这是我的代码:
的index.html:
Object { value: Order, $raw: Object }
component.html:
<div data-bind="foreach: Orders"/>
<my-component params="value: $data"></my-component>
</div>
component.ts
<span data-bind="text: Name"></span>
Component.ts:
ko.components.register('my-component', {
viewModel: ComponentVm,
template: component.html"
});
Order.ts:
class ComponentVm{
public Name:string;
constructor(order:Order){
this.Name = order.Name; //Problem here because of anonymous object
}
}
一种解决方案是:
Class Order {
public Name:string = "Bob";
constructor(){}
}
但那不是很好。
答案 0 :(得分:4)
您可以在“Component.ts”中指定“params”对象类型:
class ComponentVm {
public Name:string;
constructor(params: { order: Order }){
this.Name = params.order.Name;
}
}
答案 1 :(得分:0)
很确定简短的回答是&#34;没有&#34;。 Components receive a params argument。但这并不意味着您必须使用any
类型。您的params
对象应该是明确定义的。
params
- 将传递给组件的对象。 通常,这是一个包含多个参数的键值对象, 并且通常由组件的viewmodel构造函数接收。