如何动态设置 InputNumber 组件的 TValue 属性

Posted

技术标签:

【中文标题】如何动态设置 InputNumber 组件的 TValue 属性【英文标题】:How to dynamically set TValue property of InputNumber component 【发布时间】:2022-01-13 14:41:51 【问题描述】:

我们可以在 Blazor 平台中借助 typeparam 分配和重用 TValue。但是,我们如何为 Blazor InputNumber 组件动态分配 TValue?

代码示例:

[index.razor]

<EditForm>

      @*The below definiton is working*@
      <InputNumber TValue="int?" @bind-Value="@DynamicModelInstance.ValueAsT"></InputNumber>
       @*The below definiton is not working*@
    <InputNumber TValue="DynamicModelInstance.Type" @bind-Value="@DynamicModelInstance.ValueAsT"></InputNumber>
</EditForm>
@code 
    public DynamicModel<int> DynamicModelInstance  get; set; 

    protected override void OnInitialized()
    
        DynamicModelInstance = new DynamicModel<int>();
        DynamicModelInstance.ValueAsT = 500;
    

[DynamicModel.cs]

namespace CustomComponent.Pages

public class DynamicModel<T> where T : struct

    public System.Type Type  get; set; 
    public bool Enabled  get; set; 

    public DynamicModel()
    
        this.Type = typeof(T);
    

    private T _value;

    public T ValueAsT
    
        get  return (T)_value; 
        set  this._value = value; 
    



如何实现这个要求?

【问题讨论】:

【参考方案1】:

问题在于您的 EditForm:

EditForm 需要 Model 参数或 EditContext 参数

<EditForm Model="dynamicModelInstance">
    <InputNumber @bind-Value="@dynamicModelInstance!.Value" />
</EditForm>
@code 
    public DynamicModel<int>? dynamicModelInstance;

    protected override void OnInitialized()
    
        dynamicModelInstance = new()
        
            Value = 500
        ;
    

public class DynamicModel<T> where T : struct

    public T Value  get; set; 


【讨论】:

即使我们指定了 Modal 或 EditContext,我也无法动态指定 TValue。它显示以下错误。找不到类型或命名空间名称“type/namespace”(您是否缺少 using 指令或程序集引用?)

以上是关于如何动态设置 InputNumber 组件的 TValue 属性的主要内容,如果未能解决你的问题,请参考以下文章

Element分析(组件篇)—— InputNumber

React开发(265):ant design InputNumber

如何在 PlaybackTransportControlGlue android TV 上动态更改字幕

react(88)--ant design控制inputNumber设置正整数

element-ui InputNumber 计数器默认值设置为空

TextView设置动态改变颜色