Angular 6 SVG добавить класс к пути на клик - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь добавить класс в мою карту svg внутри углового события onclick: у меня есть рабочий код, который работает внутри ngOnInit (), но когда я добавляю тот же код в функцию события click, он не работает:

Мой код ngOnInit:

   ngOnInit() {

      let a = document.getElementById("biharsvg")  as HTMLObjectElement;;

         a.addEventListener("load", function() {
              var svgDoc = a.contentDocument;
              var wchamparan = svgDoc.getElementById("wchamparan");

               console.log(wchamparan);

              wchamparan.onclick = function() {
               alert("hello");
                }
     })
}

Этот код работает нормально, я вижу журнал, но когда я делаю это в событии нажатия кнопки, код которой:

 click() {

 alert("hello");

 let a = document.getElementById("biharsvg")  as HTMLObjectElement;

 // var wchamparan = svgDoc.getElementById("wchamparan");
 // element.classList.add("mystyle");
    a.addEventListener("load", function() {
         let svgDoc = a.contentDocument;
         let wchamparan = svgDoc.getElementById("wchamparan");
         wchamparan.classList.add("mystyle");

         console.log("hello");
})
}

Здесь я вижу предупреждающее сообщение. Я также вижу, что внутри, но a.addEventListener ("load", function () я ничего не вижу. Почему это не работает, в чем разница между ngOnInit () и onclick?)функция. Что не так с этим кодом.

1 Ответ

0 голосов
/ 01 июня 2018

Я пробовал много вещей, чтобы заставить его работать, когда я удаляю addEventListener, тогда он работал, поэтому мой код решения:

appendToContainer() {
let map = document.getElementById("biharsvg") as HTMLObjectElement;
let svgDoc = map.contentDocument; // should be fine
let echamparan = svgDoc.getElementById("echamparan");
echamparan.classList.add("mystyle");
console.log(echamparan);
}

Так что проблема, я думаю, добавить прослушиватель событий.

...