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,它只在我第一次使用這個組件時才起作用。
因此,我希望徹底改變路線改變時的組件。
不要問爲什麼我使用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