今天我遇到了很多麻烦,直到我发现,具有type属性的 <kendo-combobox
id="chartcomboBoxId"
[data]="data"
[(value)]="selectedValue"
[textField]="'desc'"
[valueField]="'name'"
[valuePrimitive]="true"
(valueChange)="handleValueChange($event)"
[popupSettings]="{appendTo: 'component'}" <!-- <=== This line is a solution-->
*ngIf="data">
</kendo-combobox>
函数参数仅限于位置参数。
示例:
[ref]
这不起作用,只是因为变量名function GetMessage
{
Param ( [ref][string]$message )
if ($message) { $message.Value = 'Hello' }
}
$message = 'ERROR'
GetMessage -message ([ref]$message)
$message
。
将其更改为:
-message
它有效。
但是这样,你只能有一个可选的类型化参数,最后一个参数。
作为替代方法,您可以删除type属性:
GetMessage ([ref]$message)
然后命名参数将再次起作用:
Param ( [ref]$message )
问题:为什么将命名GetMessage -message ([ref]$message)
参数限制为类型应该是一个问题?我想这是一个错误。
答案 0 :(得分:2)
我认为它按设计工作,与其他语言不同。定义参数时:
Param ([ref][string]$message)
PowerShell并未将此视为&#39; $message
必须是指向字符串&#39;的指针,但首先会将$message
投射到string
,然后尝试将它绑定为指针,这不是那个阶段。如果铸件有意义,它可以正常工作:
function GetMessage
{
Param ( [DateTime][String]$message )
if ($message) { $message.GetType() }
}
$message = [DateTime]::Now
GetMessage -message ([DateTime]$message)
在上面交换[DateTime]
和[String]
仍然有效,你会看到你期望的类型(即定义中最左边的那个)。
您可以使用Trace-Command
cmdlet深入了解PowerShell的功能,如下所示:
Trace-Command -Name metadata,parameterbinding,cmdlet -Expression {
$message = [DateTime]::Now
GetMessage -message ([string]$message)
} -PSHost