Size: a a a

2019 December 14

KW

Kyril Wadzinski in Angular Kyiv
Dima
як варіант лоадити якимсь сервісом цей скрипт, і потім прямо в компонеті напихати в цей d3 об'єкт значення з твого прикладу.
В общем я Вас не понял к сожалению. Если Вам не сложно, Вы не могли бы, пожалуйста, перефразировать что Вы имели ввиду
источник

D

Dima in Angular Kyiv
public loadD3Script(): Observable<any> {
 const script = document.createElement("script");
 script.src = "https://d3js.org/d3.v4.min.js";
 script.async = true;
 document.body.appendChild(script);
 return new Observable((observer: Subscriber<any>): void => {
  script.onload = ((): void => {
   observer.next(window.d3);
   observer.complete();
  });
  script.onerror = ((): void => {
   observer.error("error");
   observer.complete();
  });
 });
}
источник

KW

Kyril Wadzinski in Angular Kyiv
Походу тут не понимаю что такое нубские вопросы
источник

IF

Igor Filippov in Angular Kyiv
Dima
public loadD3Script(): Observable<any> {
 const script = document.createElement("script");
 script.src = "https://d3js.org/d3.v4.min.js";
 script.async = true;
 document.body.appendChild(script);
 return new Observable((observer: Subscriber<any>): void => {
  script.onload = ((): void => {
   observer.next(window.d3);
   observer.complete();
  });
  script.onerror = ((): void => {
   observer.error("error");
   observer.complete();
  });
 });
}
onload плохо работает насколько я знаю
источник

IF

Igor Filippov in Angular Kyiv
Есть вот такой пакет чтобы динамически грузить https://www.npmjs.com/package/ngx-script-injector
источник

IF

Igor Filippov in Angular Kyiv
😁
источник

D

Dima in Angular Kyiv
Kyril Wadzinski
Походу тут не понимаю что такое нубские вопросы
логіка має бути приблизно такою
1) завантажити d3 скрипт (зверху скинули варіанти як це зробити)
2) отримати в себе в компоненті цю глобальну змінну d3
3) з компонента ініціалізувати цю d3 якимись значеннями
источник

IF

Igor Filippov in Angular Kyiv
Кстати, д3 же можно и так использовать, он же модульную систему поддерживает уже
источник

IF

Igor Filippov in Angular Kyiv
Другой вопрос, если график там где-то внизу страницы, то можно не грузить код д3 раньше времени
источник

N

Nik in Angular Kyiv
Dima
public loadD3Script(): Observable<any> {
 const script = document.createElement("script");
 script.src = "https://d3js.org/d3.v4.min.js";
 script.async = true;
 document.body.appendChild(script);
 return new Observable((observer: Subscriber<any>): void => {
  script.onload = ((): void => {
   observer.next(window.d3);
   observer.complete();
  });
  script.onerror = ((): void => {
   observer.error("error");
   observer.complete();
  });
 });
}
использовать напрямую document из ангулара не очень кейс
источник

N

Nik in Angular Kyiv
для этого есть Renderer2
источник

D

Dima in Angular Kyiv
Nik
для этого есть Renderer2
ну в першому варіанті мого прикладу був this.renderer.appendChild(document.body, script);😊 але я змінив, щоб спростити і не пояснювати, що таке this.renderer
источник
2019 December 15

N

Nik in Angular Kyiv
ммм зачем рассказывать как делать не надо -)
источник

IF

Igor Filippov in Angular Kyiv
Nik
ммм зачем рассказывать как делать не надо -)
Лучше расскажи зачем надо рендерер
источник

N

Nik in Angular Kyiv
Igor Filippov
onload плохо работает насколько я знаю
почему плохо работает? в каком месте? в библиотеке ребята по интервалу проверяют подгрузку скрипта...
источник

IF

Igor Filippov in Angular Kyiv
Nik
почему плохо работает? в каком месте? в библиотеке ребята по интервалу проверяют подгрузку скрипта...
вот именно онлоад не кроссбраузерная штука
источник

N

Nik in Angular Kyiv
Igor Filippov
Лучше расскажи зачем надо рендерер
сейчас расскажу
источник

IF

Igor Filippov in Angular Kyiv
у меня помню даже в хроме не работала
источник

N

Nik in Angular Kyiv
Igor Filippov
вот именно онлоад не кроссбраузерная штука
ну можно и кросбраузерно писать, не только онлоад
источник

N

Nik in Angular Kyiv
что бы покрыть все браузеры
источник