事件未触发,并且Blazor组件不会刷新

时间:2020-01-06 05:39:57

标签: asp.net-core events blazor blazor-client-side

我想根据授权更改刷新组件。这是我的组件:

@inject IAuthService AuthService
@implements IDisposable

<AuthorizeView>
    <Authorized>
        Logged as: @Identity
    </Authorized>
    <NotAuthorized>
    </NotAuthorized>
</AuthorizeView>

@code
{
    private string Identity { get; set; }

    protected override async Task OnInitializedAsync()
    {
        AuthService.RefreshRequested += StateHasChanged;
        Identity = $"{(await AuthService.GetClaimFromToken("sub"))?.Value} ({(await AuthService.GetClaimFromToken("unique_name"))?.Value})";
    }

    public void Dispose()
    {
        AuthService.RefreshRequested -= StateHasChanged;
    }
}

这是我服务的一部分:

    public class AuthService: IAuthService
    {
        // ...
        public event Action RefreshRequested;

        public async Task<RequestResponse> Token(LoginModel loginModel)
        {
            // some logic

            CallRequestRefresh();

            return JsonConvert.DeserializeObject<RequestResponse>(result);
        }

        private void CallRequestRefresh()
        {
            RefreshRequested?.Invoke();
        }
    }

Token(...)方法在其他组件中使用。我不知道为什么在提到的组件中没有触发StateHasChanged

我真正想要实现的是使用给定的异步方法(Identity)提供某种更新GetClaimFromToken属性的方法。

0 个答案:

没有答案