angular - 为来自其他父组件的 div 提供动态 ID

标签 angular angular8 angular-input

我有一个如下所示的图表组件:

<div id="chart">
    <ngx-charts-bar-horizontal [view]="view" [trimYAxisTicks]="false" [xAxisTickFormatting]="convertDecimalToNumber" [scheme]="colorScheme" [results]="data" [gradient]="gradient" [xAxis]="showXAxis" [yAxis]="showYAxis" [showXAxisLabel]="showXAxisLabel" [showDataLabel]="showDataLabel" [xAxisLabel]="xAxisLabel" [barPadding]="40">
    </ngx-charts-bar-horizontal>
</div>

我正在通过它的父 div 处理这个图表的所有样式,它有 id="chart",但我需要在父组件中使用上面相同的组件 2 次!所以这会产生相同 2 个 ID 的问题。

所以,我决定从父组件将 div 的 id 作为 @Input() 传递,如下所示:

<div class="container">
    <!-- Other tags -->
    <child-component [chartId]="users"></child-component>
    <!-- Other tags -->
    <child-component [chartId]="visuals"></child-component>
    <!-- Other tags -->
</div>

在子组件上编辑:

TS 文件:

@Input() chartId: string;

HTML:

<div [id]="chartId">
    <ngx-charts-bar-horizontal [view]="view" [trimYAxisTicks]="false" [xAxisTickFormatting]="convertDecimalToNumber" [scheme]="colorScheme" [results]="data" [gradient]="gradient" [xAxis]="showXAxis" [yAxis]="showYAxis" [showXAxisLabel]="showXAxisLabel" [showDataLabel]="showDataLabel" [xAxisLabel]="xAxisLabel" [barPadding]="40">
    </ngx-charts-bar-horizontal>
</div>

I tried these techniques: [id]="chartId", [attr.id]="chartId", id="{{chartId}}"

但以上都无法从输入中设置动态 ID。

最佳答案

HTML:

<div id="chart"> </div>

组件:

@Input() chartId: string;
ngOnChanges(): void {
    const parent_div = document.getElementById('chart');
    parent_div.setAttribute('id', this.chartId);
}

在您的子组件中提供一些初始 id 作为默认值并使用 ngOnChanges 更新 id。

关于angular - 为来自其他父组件的 div 提供动态 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60448293/

相关文章:

Angular 2 : ERROR in Error encountered resolving symbol values statically

angularjs - Angular 2 中的动态路由加载失败。 (测试版)

typescript - Ionic 5 虚拟滚动创建空白空间而不是新项目

javascript - 升级到 Angular 8 后延迟加载中的路由错误

angular - 如何在 Angular 中检测具有相同值 @Input() 的变化?

javascript - Angular2 loadChildren 在 webpacked 之后,产生 __webpack_require__ is not a function

javascript - 如何从 Angular 2 中的嵌套组件更改父背景图像?

javascript - 如何将 ngModel 值从输入传递到 *ngIf

javascript - 如何在箭头函数内部的 Angular 中使用输入发送的对象属性(比第一级更深)?

angular - 子组件从 @Input 或服务订阅获取数据?哪个更好?