66using Microsoft . AspNetCore . Components . Authorization ;
77using Microsoft . AspNetCore . Components . Routing ;
88using Microsoft . Extensions . Localization ;
9+ using Microsoft . Extensions . Logging ;
910using System . Reflection ;
1011
1112namespace BootstrapBlazor . Components ;
@@ -452,12 +453,40 @@ public partial class Layout : IHandlerException, ITabHeader
452453 [ Parameter ]
453454 public object ? Resource { get ; set ; }
454455
456+ /// <summary>
457+ /// 获得/设置 是否开启全局异常捕获 默认 null 读取配置文件 EnableErrorLogger 值
458+ /// </summary>
459+ [ Parameter ]
460+ public bool ? EnableErrorLogger { get ; set ; }
461+
462+ /// <summary>
463+ /// 获得/设置 是否显示 Error 提示弹窗 默认 null 使用 <see cref="BootstrapBlazorOptions.ShowErrorLoggerToast"/> 设置值
464+ /// </summary>
465+ [ Parameter ]
466+ public bool ? ShowErrorLoggerToast { get ; set ; }
467+
468+ /// <summary>
469+ /// 获得/设置 错误日志 <see cref="Toast"/> 弹窗标题 默认 null
470+ /// </summary>
471+ [ Parameter ]
472+ public string ? ErrorLoggerToastTitle { get ; set ; }
473+
474+ /// <summary>
475+ /// 获得/设置 自定义错误处理回调方法
476+ /// </summary>
477+ [ Parameter ]
478+ public Func < ILogger , Exception , Task > ? OnErrorHandleAsync { get ; set ; }
479+
455480 /// <summary>
456481 /// 获得 登录授权信息
457482 /// </summary>
458483 [ CascadingParameter ]
459484 private Task < AuthenticationState > ? AuthenticationStateTask { get ; set ; }
460485
486+ [ Inject ]
487+ [ NotNull ]
488+ private IOptionsMonitor < BootstrapBlazorOptions > ? Options { get ; set ; }
489+
461490 [ Inject , NotNull ]
462491 private IServiceProvider ? ServiceProvider { get ; set ; }
463492
@@ -470,6 +499,10 @@ public partial class Layout : IHandlerException, ITabHeader
470499
471500 private ITabHeader ? TabHeader => ShowTabInHeader ? this : null ;
472501
502+ private bool _enableErrorLoggerValue => EnableErrorLogger ?? Options . CurrentValue . EnableErrorLogger ;
503+
504+ private bool _showToast => ShowErrorLoggerToast ?? Options . CurrentValue . ShowErrorLoggerToast ;
505+
473506 /// <summary>
474507 /// <inheritdoc/>
475508 /// </summary>
@@ -625,6 +658,15 @@ private async Task ToggleSidebar()
625658 await TriggerCollapseChanged ( ) ;
626659 }
627660
661+ private ErrorLogger ? _errorLogger ;
662+
663+ private Task OnErrorLoggerInitialized ( ErrorLogger logger )
664+ {
665+ _errorLogger = logger ;
666+ _errorLogger . Register ( this ) ;
667+ return Task . CompletedTask ;
668+ }
669+
628670 /// <summary>
629671 /// 上次渲染错误内容
630672 /// </summary>
@@ -678,6 +720,7 @@ protected override async ValueTask DisposeAsync(bool disposing)
678720
679721 if ( disposing )
680722 {
723+ _errorLogger ? . UnRegister ( this ) ;
681724 ErrorLogger ? . UnRegister ( this ) ;
682725 if ( SubscribedLocationChangedEvent )
683726 {
0 commit comments