У меня есть эта работа, она требует некоторой работы ..
Чтобы пульсация работала в сети материалов, вам нужно вызвать метод инициализации JS. Смотрите здесь: https://material.io/develop/web/components/buttons/
Хитрость заключается в том, чтобы сделать блейзерный компонент кнопки следующим образом:
[110 ]
refbut
является свойством компонента:
private ElementRef refbut { get; set; }
И в OnAfterRenderAsync
вы вызываете функцию взаимодействия JS для инициации пульсации:
protected override async Task OnAfterRenderAsync()
{
if (firstRender)
{
firstRender = false;
await refbut.InitMdcButtonAsync();
}
}
Эта функция является методом расширения, который выполняет:
public async static Task InitMdcFabAsync(this ElementRef element)
{
await JSRuntime.Current.InvokeAsync("matBlazor.materialInitmdcripple", element);
}
JS делает это:
materialInitmdcripple: function (element) {
new mdc.ripple.MDCRipple(element);
return true;
},
И, конечно же, вы должны убедиться, что материал JS en CSS загружен.
Попытайтесь добавить (пустого) статического конструктора или инициализируйте одиночный элемент в статическом конструкторе.
У Jon Skeet есть полное обсуждение шаблонов "одиночка" здесь. Я не уверен, почему это перестало работать, но в предположении это могло коснуться флага "beforefieldinit". Посмотрите его 4-й пример, где он добавляет статического конструктора для тонкой настройки этого флага. Я не утверждаю, что был экспертом по beforefieldinit, но этот признак, кажется, соответствует некоторым признакам, обсужденным здесь.
Просто повторив, что сказал Marc Gravell, но это много походит на beforefieldinit проблему, что означает, пустой статический конструктор является Вашим решением. Необходимо было бы отправить любого и всех конструкторов в классе для получения категорического ответа.
Второй метод имеет преимущество ленивой загрузки (где это - преимущество).