angular6 - 如何在角度 6 中通过 id 获取 mat-tab 元素?
问题描述
我正在尝试获取带有 id 的 mat-tab 元素,但由于某种原因,命令 document.getElementById() 返回 null 而不是 mat-tab 元素。例子:
https://stackblitz.com/edit/angular-mn5tt6
有人可以说为什么会发生这种情况,是否有更好、正确的方法来获取 HTML 元素?
非常感谢您的帮助!
我的答案
我发现获取选项卡 HTML 元素的最佳方法如下
HTML 文件:
<mat-tab-group #tabGroup>
<mat-tab label="First"> Content 1
<button (click)="printTab(tabGroup)">click me</button>
</mat-tab>
<mat-tab label="Second"> Content 2 </mat-tab>
<mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>
TS 文件:
export class TabGroupBasicExample {
@ViewChild('tabGroup') tabGroup;
printTab(tabGroup) {
console.log(this.tabGroup._tabs._results[0]);
}
}
堆栈闪电战:
https://stackblitz.com/edit/angular-mn5tt6-ahxi4j?file=app%2Ftab-group-basic-example.ts
解决方案
在
<mat-tab-group>
<mat-tab label="First" id="tab1"> Content 1
<button (click)="printTab()">click me</button>
</mat-tab>
<mat-tab label="Second"> Content 2 </mat-tab>
<mat-tab label="Third"> Content 3 </mat-tab>
</mat-tab-group>
组件更改了 HTML 结构,因此生成的 HTML 中不再有 id
如果您想查找 HTMLElement,您可以将mat-tab-label-0-0
其用于标签或mat-tab-content-0-0
内容。
但通常使用 Angular 你不需要获取你的 html 元素
推荐阅读
- azure - 如何从 Azure 分析日志上的 AzureVM 获取应用程序日志
- azure-active-directory - 云应用的 Azure AD 条件访问策略未应用
- canvas - 尝试将 SwiftUI Preview 添加到 UIKit
- python - Python websockets客户端库 - 没有检测到来自服务器的关闭?
- ios - Xamarin 表单:iPhone 设备中未显示位置权限警报
- android - 使用 Play Console android 中的 App Sign 密钥对应用进行签名
- javascript - 单击停止共享面板中的“隐藏”会调用哪个事件?
- azure-devops - 可以将其他存储库 yml 文件用于其他管道
- c# - C# - 如何初始化列表
在同一行 - centos - 如何保护库在 CentOS6 上不被卸载