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如何传递跳过一些[重复]的可选构造函数参数的主要内容,如果未能解决你的问题,请参考以下文章
如何将多个选项传递给 Firefox 中引导轮播的可选选项对象?