Blazor:在子组件中成功登录后,关闭MatBlazor PopUp对话框

阿卜杜拉·纳纳

我有一个Login.razor页面,其中发生了所有操作。

@page "/login"
@inject IAuthService AuthService
@inject NavigationManager NavigationManager

@if (ShowErrors)
{
    <div class="alert alert-danger" role="alert">
        <p>@Error</p>
    </div>
}

<div class="card">
    <div class="card-body">
        <EditForm Model="loginModel" OnValidSubmit="HandleLogin">
            <DataAnnotationsValidator />
            <ValidationSummary />

            <div class="form-group">
                <label for="email">Email address</label>
                <InputText Id="email" Class="form-control" @bind-Value="loginModel.Email" />
                <ValidationMessage For="@(() => loginModel.Email)" />
            </div>
            <div class="form-group">
                <label for="password">Password</label>
                <InputText Id="password" type="password" Class="form-control" @bind-Value="loginModel.Password" />
                <ValidationMessage For="@(() => loginModel.Password)" />
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </EditForm>
    </div>
</div>

@code {

    private LoginModel loginModel = new LoginModel();
    private bool ShowErrors;
    private string Error = "";

    private async Task HandleLogin()
    {
        ShowErrors = false;

        var result = await AuthService.Login(loginModel);

        if (result.Successful)
        {
            NavigationManager.NavigateTo("/");
        }
        else
        {
            Error = result.Error;
            ShowErrors = true;
        }
    }
}

我的MainLayout.razor包含Matblazor对话框弹出窗口。

<MatDialog @bind-IsOpen="@signInOpen">
    <MatTabGroup>
        <MatTab Label="SIGN IN">
            <BlazorCom.Client.Pages.Login />
        </MatTab>
    </MatTabGroup>
</MatDialog>

@code
{
    public bool signInOpen = false;

    void OpenDialog()
    {
        signInOpen = true;
    }
}

当我使用此对话框登录时,该框不会自动关闭,因为我不知道该怎么做。现在,我想在成功登录后关闭“弹出”对话框。有人可以帮我吗?

海农

设置signInOpen为false,对话框将关闭。

编辑:如果您需要从外部设置它,请添加方法Close,如下所示:

@code {

public void CloseDialog() {
  signInOpen=false;
  StateHasChanged();
}

然后,在Login.razor中,可以在提交按钮的@onclick事件中调用CloseDialog()函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

子组件对话框未关闭

来自分类Dev

关闭主对话框后关闭对话框

来自分类Dev

代号仅当我点击屏幕时一个关闭的PopUp对话框

来自分类Dev

关闭警报对话框

来自分类Dev

硒:关闭对话框

来自分类Dev

JQuery 对话框关闭

来自分类Dev

无法关闭对话框

来自分类Dev

单击对话框本身时关闭对话框

来自分类Dev

在Leaflet Maps Popup中启动Jquery UI对话框的问题

来自分类Dev

显示弹出模式对话框 /popup onclicking 闪亮仪表板中的行

来自分类Dev

对话框中的片段

来自分类Dev

对话框中的MapView

来自分类Dev

对话框中的CalendarView

来自分类Dev

对话框中的JComboBox

来自分类Dev

关闭Facebook登录对话框Android

来自分类Dev

从效果关闭对话框组件

来自分类Dev

jQuery对话框:在对话框中获取对话框ID

来自分类Dev

子对话框打开后关闭父对话框

来自分类Dev

关闭代码后的内容对话框

来自分类Dev

打开后对话框立即关闭

来自分类Dev

消息后关闭对话框

来自分类Dev

如何关闭代码中的对话框?

来自分类Dev

在jqgrid中关闭删除对话框

来自分类Dev

在 CaliburnMicro 的 ViewModel 中关闭对话框

来自分类Dev

Flutter 中的对话框关闭

来自分类Dev

Android中的“警报对话框”框

来自分类Dev

如何关闭组件文件中的 mdl 对话框

来自分类Dev

在“IF-STATEMENT”中成功后显示模态对话框

来自分类Dev

从组件外部触发打开全屏对话框工作,打开时如何关闭对话框