Angular 如何根据模型选择模板中的元素?

Angular 如何根据模型选择模板中的元素?,angular,Angular,我从服务器返回了以下类型的数据:let response:RegistryGeneric[]: interface RegistryGeneric { id: number; name: number; } 我想标记用户是否选择了itemRegistryGeneric。为此,我创建了扩展接口: interface RegistryGenericUI extends RegistryGeneric { selected: boolean; } 和允许设置选定属性的方法: pu

我从服务器返回了以下类型的数据:
let response:RegistryGeneric[]

interface RegistryGeneric {
   id: number;
   name: number;
}
我想标记用户是否选择了item
RegistryGeneric
。为此,我创建了扩展接口:

interface RegistryGenericUI extends RegistryGeneric {
   selected: boolean;
}
和允许设置选定属性的方法:

public setSelected(registry: RegistryGeneric) {
   registry.selected = true;
}
我想知道这样做是否正确,或者在组件内部创建
newmap()
来存储所选的
RegistryGeneric


你是如何用角度来解决这个问题的?

我认为这更像是一个“打字脚本”问题,而不是“角度”问题?除非我弄错了,否则您应该能够用一个接口解决所有问题

一种方法是将
selected?:boolean
属性添加到第一个接口。这将使该属性成为可选属性(因此,如果从服务器返回的
RegistryGeneric
没有该属性,则不会出现错误)。但是,请注意,使用可选属性(标记为
)通常不是一种方法。如果您从Typescript开始,这很容易,但是该语言提供了更好的可能性

一个更好的方法,但我自己还在学习,就是使用,比如
省略
。这将允许您最大限度地使用打字功能。您将获得对数据的最大控制权,并从IDE获得最佳支持。例如,在本例中,您可以使用三个属性设置界面,然后服务器将返回类型为
的对象。这会使代码更难阅读,但如果由于某种原因您没有正确使用类型,编译器会在早期显示错误

编辑:正如我所说,我自己仍在学习第二种方法,因此对此持保留态度。我看到,
省略
用于以下情况:例如,您的Typescript界面中有一个
id
,您可以使用该id删除一个项目,但在创建新项目时,您不想传递
id
(因为
id
是由服务器生成的)