1
ルータの変更時にコンポーネントを再登録する必要があります。問題は、SVGファイルにデータを取り込むことです。ルータの変更時にコンポーネントを完全にレンレンする
いくつかのコード:
ngOnInit() {
const self = this;
this.route.params.subscribe(params => {
this.DiagnosticServerID = params['diagnosticServerID'];
this.ConnectionName = params['connectionName'];
jQuery('#svgobj')[0].addEventListener('load', function() {
_snap = Snap("#svgobj"));
self.registerCpuUsageControllerEvent();
svgTooltip(_snap);
self.go();
});
});
}
問題がありますか?問題はjQuery( '#svgobj')[0] .addEventListenerであり、このコンポーネントを初めて使用するときには1回しか動作しません。
私はルート変更時にコンポーネントを完全に再登録するつもりです。
は、私がここにjQueryといくつかの奇妙なコードを使用する理由は聞かないでください 、それはエンバーからわずかPOCとポートです:)
更新作業コード:
svgObj: boolean = false;
constructor(public api: ApiService,
private route: ActivatedRoute,
private router: Router,
) {
this.route.params.subscribe(params => {
this.DiagnosticServerID = params['diagnosticServerID'];
this.ConnectionName = params['connectionName'];
if(this.svgObj){
this.start();
}
});
}
initSvg(){
const self = this;
jQuery('#svgobj')[0].addEventListener('load', function() {
self.start();
});
}
start(){
const self = this;
_snap = Snap("#svgobj");
self.registerCpuUsageControllerEvent();
svgTooltip(_snap);
self.go();
}
さて、コンストラクタからinitSvgを呼び出すと、まだ#svgobjが存在しないため、エラーが発生します。 – RaShe
その場合、あなたはそれを守る必要があります。 'if(this.svgobj){this.initSvg(); } ' –
私はポイント、感謝を得た:) – RaShe