Datalayer.push с Typescript в Angular 6 - PullRequest
0 голосов
/ 09 октября 2018

Когда я нажимаю на кнопку, я должен отправить в слой данных информацию, но я не знаю, как это сделать, потому что я использую Angular 6, поэтому мне нужно использовать Typescript и window.dataLayer.push не работает идай мне эту ошибку

enter image description here

Форма

<form>
            <div class="radio">
              <input value="Yes" id="radio-1" [(ngModel)]="answer" name="radio" type="radio">
              <label class="radio-label rob-l" for="radio-1">Yes</label>  
          </div>
          <div class="radio">
            <input value="No" id="radio-2" [(ngModel)]="answer" name="radio" type="radio">
            <label class="radio-label rob-l" for="radio-2">No</label>
          </div>
          </div>
        <div class="btn">
          <button (click)="Next()" type="submit">Next question</button>
        </div>
      </form>

И я хочу получить что-то подобное

Next(){
    if ((this.path == 1) && (this.answer === "Yes" || this.answer === "No"))
          {
            // window.dataLayer = window.dataLayer || [];
            // window.dataLayer.push({
            // 'event': 'answer',
            // 'answer': this.answer 
            // });
            this.path++;
            this.answer = "";
          }
}

Проблема решена с помощью этого кода:

window['dataLayer'] = window['dataLayer'] || [];
        window['dataLayer'].push({
        'event': 'Answer',
        'failedText': this.answer 
        });
    ngOnInit() {
        window['dataLayer'] = window['dataLayer'] || {};
      }

1 Ответ

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

Вы можете объявить глобальный интерфейс Window со свойством dataLayer поверх вашего компонента / услуги и т. Д., Например:

// Declare gTM dataLayer array.
declare global {
  interface Window { dataLayer: any[]; }
}

И затем просто использовать это свойство в коде вашего компонента безлюбые ошибки.

...