【发布时间】:2021-04-07 04:14:52
【问题描述】:
对 Angular/TS 非常陌生,也许我的措辞有误,但我会尽力解释。
我有 2 个接口,一个像这样扩展另一个:
export interface CustomerModel {
firstName: string;
lastName: string;
//other things
}
export interface OrderModel extends Pick<CustomerModel, 'firstName' | 'lastName' {
orderNumber: number;
}
我创建了一个带有硬编码客户实例的服务(在机器上本地工作,现在所有内容都是硬编码的。我最终将使用 DB,但我需要首先以这种方式工作)
export class CustomerService {
customers: CustomerModel[];
constructor() {
this.customers = [{
firstName: 'John',
lastName: 'Doe',
//more here
},
{
firstName: 'Jane',
lastName: 'Smith',
//more here
},
]
}
getCustomers(): Observable<CustomerModel[]> {
const customers = of(customers);
return customers;
}
}
现在我正在尝试使用 OrderModel 创建一个订单服务
export class OrderService {
orders: OrderModel[];
constructor() {
this.orders = [{
orderNumber: 123;
firstName: ???, //what do I put here to pick up the name from CustomerModel
lastName: ???,
},
{
//more here
},
]
}
getOrders(): Observable<OrderModel[]> {
const orders = of(orders);
return orders;
}
}
当我将鼠标悬停在我的 orderservice 中 firstName 的值上时,它确实说它来自 CustomerModel,所以我知道扩展的工作。
如果我将 firstName 和 lastName 留在 orders 数组之外,我会收到一条错误消息,指出 OrderModel 正在等待它们。
也许这是不可能的,并且可能有更好的解决方案,但我一直在兜圈子试图看看这是否有效。
谁能帮我从 CustomerModel 中获取属性 firstName/lastName 的值?
【问题讨论】:
-
可能会改变 OrderModel extends Pick
-
对不起,这是一个错字,它设置为那个。我的问题是我应该为 firstName 输入什么以便它从 CustomerModel 中获取 firstName?
-
OrderModel 应该有 Customer Id 而不是 firstName 和 lastName。因此,Customer Model 应该有一个 Id 字段。像这样给出 0 , 1, 2 并在 OrderModel 中给出相同的客户 ID 而不是 firstName 和 lastName 。
-
如果我理解正确,您希望从一项服务复制数据,但为每个项目添加 ID?还是您有智能感知问题?
-
@AdityaYada 是的。我必须有一个 firstName/lastName 的值,但我希望它是 customerModel 中的名称。我不知道在 orderService 中放什么,以便它在订单上选择“John Doe”。
标签: angular typescript angular10