Javascript 角度hideNoData不动态工作

Javascript 角度hideNoData不动态工作,javascript,angular,typescript,highcharts,Javascript,Angular,Typescript,Highcharts,我很难让hideNoData()和ShowNodeData()与官方highcharts角度组件()一起工作 下面是stackblitz中的一个基本示例: 这是一个简化版本。在我的实际项目中,我异步获取数据,在加载时,我显示我的自定义(不是highcharts提供的)加载指示器。因此,最初我想关闭无数据消息,但一旦结果返回,根据结果,我可能需要显示无数据消息 我已经尝试在调用hideNoData()后在图表组件上使用[(update)]=“updateFlag”来触发更改,但没有效果。这同样适用

我很难让hideNoData()和ShowNodeData()与官方highcharts角度组件()一起工作

下面是stackblitz中的一个基本示例:

这是一个简化版本。在我的实际项目中,我异步获取数据,在加载时,我显示我的自定义(不是highcharts提供的)加载指示器。因此,最初我想关闭无数据消息,但一旦结果返回,根据结果,我可能需要显示无数据消息

我已经尝试在调用
hideNoData()
后在图表组件上使用
[(update)]=“updateFlag”
来触发更改,但没有效果。这同样适用于
update()
reflow()
redraw()


我甚至手动调用了
detectChanges
来强制执行摘要循环,但也没有效果

对于Highcharts,我发现让我的组件了解图表参考非常重要,您可以使用
Highcharts chart
中提供的
输出
回调来执行此操作。在组件中,您可以执行以下操作:

public callback = this.chartCallback.bind(this);
其中
chartCallback
为:

public chartCallback(chart: Highcharts.Chart)
{
    this.chart = chart;
}
HTML将如下所示:

<highcharts-chart [Highcharts]="Highcharts" [options]="options
                  [callbackFunction]="callback">
</highcharts-chart>
但是,当然,一旦您有了对图表的引用,您就可以在组件中自由地使用它

有关完整的工作示例,请参见


此外,如果您不想显示
无数据消息
。那么这可能是您的最佳路线:

this.options = {
    title : { text : 'simple chart' },
    series: [{
        data: [],
    }],
    noData: null
};

好的,我找到了解决办法。显然,海图不能在同一个摘要周期中处理它。如果我打电话

setTimeout(() => {
    chart.hideNoData();
});
它可以正常工作并正确隐藏。然而,现在它在开始时短暂闪烁,解决方案是完全禁用自动消息。在图表选项中添加以下内容:

chart: {
    events: {
        load(): void {
            this.hasData = (): boolean => {
                return true;
            };
        },
    },
},

我已经在处理引用并获取highchart对象的实例。我会更新我的答案很高兴你找到了解决方案。如果您真的不想显示
无数据消息
,也许有更好的方法。检查我的编辑。我希望它显示出来,只是不是最初显示,而是根据不同的异步请求动态显示。谢谢你的加入,我不知道这个选项
chart: {
    events: {
        load(): void {
            this.hasData = (): boolean => {
                return true;
            };
        },
    },
},