Angular如何传递跳过一些[重复]的可选构造函数参数

Posted

技术标签:

【中文标题】Angular如何传递跳过一些[重复]的可选构造函数参数【英文标题】:Angular how to pass optional constructor arguments skipping some [duplicate] 【发布时间】:2018-01-30 23:49:45 【问题描述】:

我在 angular2 中的构造函数有很多可选参数。它就像一个搜索构造。传递参数时,我怎么能说这个参数是这个? 假设是否有 first-name、last-name、age、sex 都是可选的。我必须通过性而不通过任何其他事情。它看起来像传递一个带有名称的参数。我不想传递 null 和传递东西。

谢谢

【问题讨论】:

【参考方案1】:

您可以使用一个“选项”参数:

const obj = new User(age: 28);

【讨论】:

我会尝试并告诉你。【参考方案2】:

如果它只是一个简单的打字稿类,你所要做的就是在任何可选参数后添加问号。所以不用

constructor(x: number, abc: string, z:number)

你可以这样做

constructor(x:number, abc?:string, z?:number) 

这将使最后两个参数成为可选参数。

如果您正在谈论在组件、指令或可注入服务的构造函数中制作可选参数,您可以导入“可选”装饰器并在任何注入的类前面加上它。即:

constructor( @Optional() private win: WindowService) 

【讨论】:

我的问题是关于如何只传递几个可选参数 这正是我的回答是关于...?你不明白什么? 如何只传Z而不传x来调用构造函数? 哦。在打字稿中,如果参数列表中有“间隙”,则必须指定“未定义”。更好的做法是将单个对象作为参数传递,然后为该对象创建一个接口。导出接口 MyInterface property1: number;属性2?:任何;财产3?数字;属性4:字符串; 然后你可以只传递你可用的参数,而不必指定是否缺少任何参数。让 abc = new MyClass(property1: 123, property5: "abc");并且不必担心两者之间的任何问题。 我正在寻找命名参数之类的东西,而不是 undefined 或 null。

以上是关于Angular如何传递跳过一些[重复]的可选构造函数参数的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中的可选链接[重复]

如何将多个选项传递给 Firefox 中引导轮播的可选选项对象?

第二条:遇到多个构造器参数时要考虑用构建器

如何添加双击事件并在 Angular KendoUI 中传递选定的行数据

Angular 指令的隔离范围上的可选双向绑定

Javascript:函数中的可选参数[重复]