簡體   English   中英

我無法在angular / d3js中訪問_groups屬性

[英]I can't access the _groups property in angular/d3js

我在使用以下代碼訪問“ _groups”屬性時遇到問題:

function mouseDate(scale){ 
        var g = d3.select("#group")._groups[0][0]

        var x0 = scale.invert(d3.mouse(g)[0]);

        console.log(x0);
    }

我的console.log結果:

Selection {_groups: Array(1), _parents: Array(1)}
  _groups: Array(1)
    0: Array(1)
      0: g#group

編譯代碼時,出現以下錯誤:

D:/Documents/starter-propre-angular4/src/app/pages/graphe-page/graphe.page.ts (782,32): Property '_groups' does not exist on type 'Selection<BaseType, {}, HTMLElement, any>'.

所以我的問題是:是否知道我正在使用d3js升級為TypeScript,是否有一種解決方案可以全年獲取“ _groups”中的信息。

_groups屬性是Selection對象的私有成員,因此不應直接訪問。 (附帶說明:JavaScript中的慣例是,任何以下划線開頭的成員都表示私有成員。例如,參見“ JavaScript中屬性和方法名稱的下划線前綴” )。

由於該屬性被視為私有屬性,因此它不是公共接口的一部分,因此不包含在d3選擇模塊的TypeScript類型聲明中。 因此,您將看到見證的編譯器錯誤。 盡管這實際上可以在純JavaScript中運行,但TypeScript編譯器確實可以實現它應做的工作-即,防止您做一些不安全的事情。

但是,看一下您發布的代碼,您顯然對_groups屬性本身不感興趣,而對_groups[0][0]感興趣,該內部引用選擇的第一個節點。 幸運的是, selection.node()方法將完全返回該第一個元素。 您可以這樣做:

function mouseDate(scale){ 
  var g = d3.select("#group").node();
  var x0 = scale.invert(d3.mouse(g)[0]);
  console.log(x0);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM