Мне нужно восстановить компонент при изменении маршрутизатора, проблема в том, что я рисую в 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 здесь и некоторые странные код, это просто ДОУ и порт от Ember :)
Обновленный рабочий код:
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