Я пытаюсь создать свой собственный компонент с системой флажков, чтобы узнать, нужен ли мне атрибут или нет (типа int
/ float
и т. Д.)
<input type="checkbox" @bind="isMinInt" />
@if (isMinInt == true) {
<input type="number" @bind="MinInt"/>
}
Поэтому я хотел бы заменитьэто @if
:
@if(isMinInt == true) {
<MyComponent @bind-Value="ValueInt" Min="@MinInt"/>
} else {
<MyComponent @bind-Value="ValueInt"/>
}
чем-то вроде
<MyComponent @bind-Value="ValueInt"
@if(isMinInt == true ? Min="@MinInt" : String.Empty />
, потому что у меня будет много атрибутов в моем компоненте, и я хотел бы сделать его проще
РЕДАКТИРОВАТЬ + Решение
Теперь используя @attributes
:
<input type="checkbox" @bind="isMinInt" />
@if (isMinInt == true) {
<input type="number" @bind="MinInt" />
}
<MyComponent @bind-Value="ValueInt" @attributes="GetAttributesInt()" />
@code {
private bool isMinInt = false;
private int MinInt;
private IDictionary<string, object> GetAttributesInt() {
var dict = new Dictionary<string, object>() { };
if (isMinInt)
dict.Add("Min", MinInt);
return dict;
}
}
РЕДАКТИРОВАТЬ + Решение 2
Теперь используя @attributes
:
<input type="checkbox" @bind="isMinInt" />
@if (isMinInt == true) {
<input type="number" @bind="MinInt" />
}
<MyComponent @bind-Value="ValueInt" @attributes="GetAttributesInt()" />
@code {
private bool isMinInt = false;
private int MinInt;
private IDictionary<string, object> GetAttributesInt() {
var dict = new Dictionary<string, object>() { };
dict["Min"] = this.isMinInt ? MinInt : Int32.MinValue;
return dict;
}
}
Причина, по которой я использую Int32.MinValue
, заключается в том, что MyComponent
соответствует <input type="number">
, где его min
привязан к моему MinInt
, поэтому, если я использую0
вместо Int32.MinValue
это не позволит мне перейти на отрицательные числа.