Angular Material mat-tab选中内容短暂显示后消失问题求助
selectedIndex初始化时机不匹配
若自定义组件中mat-tab是通过*ngFor动态生成的,而@Input() selectedIndex(值为1)在tab列表渲染完成前就被传入,mat-tab-group会先尝试选中索引1,但此时对应的tab还未存在,当tab列表加载完成后,组件会自动重置选中索引为默认值0,就会出现目标内容短暂显示后消失的情况。变更检测触发意外重置
如果自定义组件使用了ChangeDetectionStrategy.OnPush变更检测策略,或者父组件的变更检测导致组件重新渲染时,没有正确保留传入的selectedIndex值,比如组件内部在生命周期钩子(如ngAfterViewInit)中不小心将selectedIndex重置为默认值,就会覆盖外部传入的设置。双向绑定未正确实现
封装mat-tab-group时如果只处理了@Input() selectedIndex,但没有对外暴露selectedIndexChange输出事件,也没有将tab-group的selectedIndex与输入属性做双向绑定,当tab-group内部状态发生变化(比如tab加载完成后的默认调整)时,无法同步外部传入的选中值,导致选中状态被重置。异步数据加载导致tab列表变更
若mat-tab的生成依赖异步数据(比如接口请求返回的tab配置),当selectedIndex在数据返回前就被设置,数据加载完成后tab列表重新渲染,mat-tab-group会因为tab数量的变化自动将选中索引重置为0,从而覆盖之前设置的1。
内容的提问来源于stack exchange,提问作者cube

