Ошибка типа: это не функция в IntroJs._introExitCallback - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь передать div в showOff в intro.onexit (), но получаю эту ошибку.

TypeError: this.hideStep is not a function
    at IntroJs._introExitCallback (http://localhost:8100/build/main.js:511:18)
    at IntroJs._exitIntro (http://localhost:8100/build/vendor.js:120298:31)
    at HTMLDivElement.overlayLayer.onclick [as __zone_symbol__ON_PROPERTYclick] (http://localhost:8100/build/vendor.js:121508:20)
    at HTMLDivElement.H (http://localhost:8100/build/polyfills.js:3:23950)
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15660)
    at Object.onInvokeTask (http://localhost:8100/build/vendor.js:5125:33)
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:15581)
    at r.runTask (http://localhost:8100/build/polyfills.js:3:10834)
    at e.invokeTask [as invoke] (http://localhost:8100/build/polyfills.js:3:16794)
    at p (http://localhost:8100/build/polyfills.js:2:27648)

Я также получил эту ошибку, пытаясь передать menuCtrl.close () с this.menuCtrl.close () Я должен был объявить его в функцию intro (), чтобы он заработал.Я думаю, это потому, что я вызываю функцию компонента, поэтому мне действительно нужно создать компонент, в который будет передаваться значение false?

Я сейчас вроде как Lost, я учусь,возможно у меня неправильные определения.

Это мой код

public step1 = true;

 hideStep(){
    this.step1 = false; 
  }

intro() {
    let intro = introJs.introJs();
    let menuCtrl = this.menuCtrl;

    intro.setOptions({
    steps: [
      {
        intro: "Hello!! we want to give you some recommendations"
      },
      {
        element: '#step1',
        intro: "You can see the profile settings, just tapping in your profile picture",
        position: 'bottom'

      },
      {
        element: '#step2',
        intro: "You can see the profile settings, just tapping in your profile picture",
        position: 'bottom'  
      }
    ]
    });

    intro.start();
    intro.onexit(function() {
      menuCtrl.close();
      this.hideStep();
    });
  }

  ngAfterViewInit(): void {
    this.intro();
  }

1 Ответ

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

Попробуйте использовать жирную стрелку вместо метода метода, это проблема ключевого слова this:

intro.onexit(() => {
    menuCtrl.close();
    this.hideStep();
});

Ключевое слово this метода function указывает на владельца функции, в которой он находится

...