【发布时间】:2023-02-21 22:09:35
【问题描述】:
我有一个内部带有文本区域的组件,用户可以在其中通过参数设置行。现在我想让这个文本区域随着用户类型的增加而增长。输入的参数变为最小行数。
我现在拥有的:
组件.razor
<textarea rows="@Rows"
value="@Value"
@oninput=@ChangeValueAsync />
组件.razor.cs
private int MinRows { get; set; } = 1;
[Parameter]
public int Rows{ get; set; }
[Parameter]
public string Value { get; set; } = string.Empty;
[Parameter]
public EventCallback<string> ValueChanged { get; set; }
private async Task ChangeValueAsync(ChangeEventArgs args)
{
Rows= Math.Max(MinRows, Math.Max(Value.Split('\n').Length, Value.Split('\r').Length)+1);
await ValueChanged.InvokeAsync(args?.Value?.ToString());
}
protected override void OnParametersSet()
{
MinRows = Math.Abs(Math.Max(1,Rows));
base.OnParametersSet();
}
在调试器中,我可以读取行数计算正确,但 textarea 不调整大小。任何人都可以向我解释为什么文本区域仍然相同吗?
哦.. 重要的是不要使用JavaScript。
【问题讨论】: