77
88namespace BootstrapBlazor . Components ;
99
10- class TabItemContent : IComponent
10+ class TabItemContent : IComponent , IHandlerException , IDisposable
1111{
1212 /// <summary>
1313 /// Gets or sets the component content. Default is null
@@ -18,6 +18,15 @@ class TabItemContent : IComponent
1818 [ CascadingParameter , NotNull ]
1919 private Tab ? TabSet { get ; set ; }
2020
21+ [ Inject , NotNull ]
22+ private DialogService ? DialogService { get ; set ; }
23+
24+ [ Inject ]
25+ [ NotNull ]
26+ private IOptionsMonitor < BootstrapBlazorOptions > ? Options { get ; set ; }
27+
28+ private ErrorLogger ? _logger ;
29+
2130 private RenderHandle _renderHandle ;
2231
2332 void IComponent . Attach ( RenderHandle renderHandle )
@@ -55,11 +64,17 @@ private RenderFragment RenderItemContent(RenderFragment? content) => builder =>
5564 builder . OpenComponent < ErrorLogger > ( 0 ) ;
5665 builder . AddAttribute ( 1 , nameof ( ErrorLogger . ChildContent ) , content ) ;
5766
58- var enableErrorLogger = TabSet . EnableErrorLogger ;
59- var showToast = TabSet . ShowErrorLoggerToast ;
67+ var enableErrorLogger = TabSet . EnableErrorLogger ?? Options . CurrentValue . EnableErrorLogger ;
68+ var showToast = TabSet . ShowErrorLoggerToast ?? Options . CurrentValue . ShowErrorLoggerToast ;
6069 builder . AddAttribute ( 2 , nameof ( ErrorLogger . EnableErrorLogger ) , enableErrorLogger ) ;
6170 builder . AddAttribute ( 3 , nameof ( ErrorLogger . ShowToast ) , showToast ) ;
6271 builder . AddAttribute ( 4 , nameof ( ErrorLogger . ToastTitle ) , TabSet . ErrorLoggerToastTitle ) ;
72+ builder . AddAttribute ( 5 , nameof ( ErrorLogger . OnInitializedCallback ) , new Func < ErrorLogger , Task > ( logger =>
73+ {
74+ _logger = logger ;
75+ _logger . Register ( this ) ;
76+ return Task . CompletedTask ;
77+ } ) ) ;
6378 builder . CloseComponent ( ) ;
6479 } ;
6580
@@ -75,4 +90,20 @@ public void Render()
7590 _key = new object ( ) ;
7691 RenderContent ( ) ;
7792 }
93+
94+ /// <summary>
95+ /// HandlerException 错误处理方法
96+ /// </summary>
97+ /// <param name="ex"></param>
98+ /// <param name="errorContent"></param>
99+ public Task HandlerException ( Exception ex , RenderFragment < Exception > errorContent ) => DialogService . ShowErrorHandlerDialog ( errorContent ( ex ) ) ;
100+
101+ /// <summary>
102+ /// IDispose 方法用于释放资源
103+ /// </summary>
104+ public void Dispose ( )
105+ {
106+ _logger ? . UnRegister ( this ) ;
107+ GC . SuppressFinalize ( this ) ;
108+ }
78109}
0 commit comments