Я хотел бы поделиться некоторыми базовыми c входными компонентами между проектами Blazor, но мне кажется, что в моем общем проекте бритвы чего-то не хватает, когда дело доходит до поддержки привязки данных.
Использование привязки компонентов Microsoft пример здесь .
Код компонента выглядит так:
Password: <input
value="@Password"
@oninput="OnPasswordChanged"
type="@(showPassword ? "text" : "password")" />
<label><input type="checkbox" @bind="showPassword" />Show password</label>
@code {
private bool showPassword;
[Parameter]
public string Password { get; set; }
[Parameter]
public EventCallback<string> PasswordChanged { get; set; }
private Task OnPasswordChanged(ChangeEventArgs e)
{
Password = e.Value.ToString();
return PasswordChanged.InvokeAsync(Password);
}
}
, а затем он используется следующим образом:
<PasswordBox @bind-Password="password" />
@code {
string password;
}
Когда Компонент объявлен непосредственно в моем проекте Blazor WebAssembly, это работает, как ожидалось. Однако, если я перемещаю компонент в библиотеку, чтобы использовать его в общих компонентах, я получаю ошибку компиляции:
Ошибка Имена атрибутов не могут быть выведены из атрибута связывания 'bind-Password'. Атрибуты привязки должны иметь форму 'bind' или 'bind-value' вместе с соответствующими дополнительными параметрами, такими как 'bind-value: event', 'bind: format'
Я предполагаю, что я Мне не хватает ссылки в моем общем проекте, который обрабатывает эти атрибуты привязки, но я не знаю, как найти, на что мне нужно ссылаться.
В настоящее время я ссылаюсь на:
Этого кажется достаточно для обычного связывания атрибутов для полей и передачи значений от одного компонента к другому, но не для этого c синтаксиса двустороннего связывания. Что мне не хватает?