Как получить извне значение внутри абонента - PullRequest
0 голосов
/ 01 июня 2019

Я занимаюсь разработкой панели инструментов с chartjs и Angular 7, и мне нужно отобразить некоторую информацию из объекта во всплывающей подсказке.

enter image description here

Яв состоянии получить объект в консольном журнале, но я не знаю, как получить значение из функции подписчика внутри, которая позволяет мне отображать пользовательскую подсказку на экране.

это мой код.

ngOnInit() {

this.batches.forEach(batch => {
        let batchID = batch.batch_id;
        this.dashboardService.getBatchId(batchID).subscribe(singleBatch => {
          this.batch = singleBatch;
          console.log(this.batch)
          let batchName = this.batch.name //<-- THIS IS MY VARIABLE
          console.log(batchName)
        })
      })
}

Duration = {
    tooltips: {
      // Disable the on-canvas tooltip
      enabled: false,

      custom: function(tooltipModel) {
          // Tooltip Element
          var tooltipEl = document.getElementById('chartjs-tooltip');

          // Create element on first render
          if (!tooltipEl) {
              tooltipEl = document.createElement('div');
              tooltipEl.id = 'chartjs-tooltip';
              tooltipEl.innerHTML = '<table style="background-color: #eee;"></table>';
              document.body.appendChild(tooltipEl);
          }

          function getBody(bodyItem) {
              return bodyItem.lines;
          }

          // Set Text
          if (tooltipModel.body) {
              var titleLines = tooltipModel.title || [];
              var bodyLines = tooltipModel.body.map(getBody);
              innerHtml += '<tbody>';

              bodyLines.forEach(function(body, i) {
                  var span = '<span>' +
                  '<p>Batch: </p>' + //<----HERE IT IS THE PLACE WHERE I WANT TO PUT BATCHNAME
                  '</span>';
                  innerHtml += '<tr><td>' + span + body + '</td></tr>';
              });
              innerHtml += '</tbody>';
          }
      }

  }
};

заранее спасибо.

1 Ответ

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

Я собираюсь псевдокодировать это, потому что я не на своей машине разработки.

Из вашего кода у вас уже есть переменная для ваших пакетов, например this.batches, так почему вы возвращаетеськ вашим услугам, чтобы получить ваши партии?например,

 this.batches.forEach(batch => { console.log(batch.name) });

Вам просто нужна функция для отображения всплывающей подсказки, например,

 tooltip(batch: Batch) => { batch.name }

Тогда вам просто нужно вызвать ее из html

<div *ngFor="let batch in batches">
    <div class="tooltip">{{tooltip(batch)}}</div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...