Служба контейнеров состояния памяти Blazor WebAssemblyC#

Место общения программистов C#
Ответить
Anonymous
 Служба контейнеров состояния памяти Blazor WebAssembly

Сообщение Anonymous »

Я пытаюсь реализовать службу контейнера состояния памяти в своем проекте Blazor WebAssembly. У меня есть 2 компонента (они не связаны между собой как родительский и дочерний), мой основной компонент отвечает за сбор информации. Прикрепленный фрагмент кода:

Код: Выделить всё

@inject ServiceScopped
@inject IDiposable

information collection

@Code
{
protected override async Task OnInitializedAsync()
{
ServiceScopped.Change += StateHasChanged;
}

private async Task HandleSubmit()
{
await Save();
return;
}

private async Task Save()
{
var ServiceDTO = new ServiceScoppedDTO
{
// I assign the properties entered in the form
}
ServiceScopped.UpdateData(ServiceDTO );

/* I call to open the blank window and generate the table */
await jsRuntime.InvokeVoidAsync("open", "newwindows", "_blank");
}

public void Dispose()
{
ServiceScopped.Change -= StateHasChanged;
}

}
Мой основной компонент хранит данные, но когда я открываю компонент на другой вкладке, служба оказывается пустой:

Код: Выделить всё

@inject ServiceScopped
@inject IDiposable

// Here I print my data in an htm table

@Code{
private DataDTO ServiceDTO;

protected override async Task OnInitializedAsync()
{
ServiceScopped.Change += StateHasChanged;
ServiceDTO = ServiceScopped.Data;
}
public void Dispose()
{
ServiceScopped.Change -= StateHasChanged;
}
}
Программа:

Код: Выделить всё

builder.Services.AddSingleton();
Сервис:

Код: Выделить всё

    public class ServiceScopped
{
public DataDTO Data { get; private set; } = new DataDTO();

public event Action? Change;

public void UpdateData(DataDTO newData)
{
Data = newData;
NotifyStateChanged();
}

private void NotifyStateChanged() => Change?.Invoke();
}
Мой основной компонент устанавливает данные, но вторичный компонент их не получает, он запускается пустым.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ebassembly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»