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,11 @@ class TabItemContent : IComponent
1818 [ CascadingParameter , NotNull ]
1919 private Tab ? TabSet { get ; set ; }
2020
21+ [ Inject , NotNull ]
22+ private DialogService ? DialogService { get ; set ; }
23+
24+ private ErrorLogger ? _logger ;
25+
2126 private RenderHandle _renderHandle ;
2227
2328 void IComponent . Attach ( RenderHandle renderHandle )
@@ -60,6 +65,12 @@ private RenderFragment RenderItemContent(RenderFragment? content) => builder =>
6065 builder . AddAttribute ( 2 , nameof ( ErrorLogger . EnableErrorLogger ) , enableErrorLogger ) ;
6166 builder . AddAttribute ( 3 , nameof ( ErrorLogger . ShowToast ) , showToast ) ;
6267 builder . AddAttribute ( 4 , nameof ( ErrorLogger . ToastTitle ) , TabSet . ErrorLoggerToastTitle ) ;
68+ builder . AddAttribute ( 5 , nameof ( ErrorLogger . OnInitializedCallback ) , new Func < ErrorLogger , Task > ( logger =>
69+ {
70+ _logger = logger ;
71+ _logger . Register ( this ) ;
72+ return Task . CompletedTask ;
73+ } ) ) ;
6374 builder . CloseComponent ( ) ;
6475 } ;
6576
@@ -75,4 +86,20 @@ public void Render()
7586 _key = new object ( ) ;
7687 RenderContent ( ) ;
7788 }
89+
90+ /// <summary>
91+ /// HandlerException 错误处理方法
92+ /// </summary>
93+ /// <param name="ex"></param>
94+ /// <param name="errorContent"></param>
95+ public Task HandlerException ( Exception ex , RenderFragment < Exception > errorContent ) => DialogService . ShowErrorHandlerDialog ( errorContent ( ex ) ) ;
96+
97+ /// <summary>
98+ /// IDispose 方法用于释放资源
99+ /// </summary>
100+ public void Dispose ( )
101+ {
102+ _logger ? . UnRegister ( this ) ;
103+ GC . SuppressFinalize ( this ) ;
104+ }
78105}
0 commit comments