Значение не определено после функции - PullRequest
0 голосов
/ 29 мая 2020

У меня есть один класс с одной функцией в нем и другой класс, который импортирует первый класс и будет использовать эту функцию. После того, как функция сработает, мне нужно одно значение, но я не получаю никакого значения после функции.

Первый класс:

export class MoveEff {

    checkEffect(effectFaceOff1,moveEff1,moveEff2){
        if ( effectFaceOff1=== 'grassgrass') {

            moveEff1 = 10;
            console.log(moveEff1);

        }
    }
}

Второй класс:


import { Component, OnInit } from '@angular/core';
import {GenIService} from "../Pokemons/gen-i.service";
import {MovesService} from "../Moves/moves.service";
import {MoveDataClass} from "../MoveDATA/move-data-class";
import {MoveEff} from "../MoveDATA/move-eff";

@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})

export class HomePage implements OnInit {

  effectFaceOff1;
  moveEff1;
  moveEff2;

constructor(private moveeff: MoveEff) {}

 this.moveeff.checkEffect(this.effectFaceOff1,this.moveEff1,this.moveEff2);

 console.log(this.moveEff1,this.moveEff2);

В последнем console.log я должен видеть 10 значение moveEff1, но оно кажется неопределенным .

Почему? и как я могу это решить?

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Я не знаю, откуда вы получаете effectFaceOff1, moveEff1 и moveEff2, но если это @Input, их значения не могут быть получены в конструкторе.

В этом случае вам следует переместить свой код в ngOnInit:

ngOnInit() {
  this.moveeff.checkEffect(this.effectFaceOff1,this.moveEff1,this.moveEff2);
  console.log(this.moveEff1,this.moveEff2);
}

И последнее, но не менее важное: MoveEff следует сделать Injectable, чтобы предоставить его вашему классу:

@Injectable({ providedIn: 'root' })
export class MoveEff {
  checkEffect(effectFaceOff1,moveEff1,moveEff2){
    if ( effectFaceOff1 === 'grassgrass') {
        moveEff1 = 10;
        console.log(moveEff1);
    }
  }
}
0 голосов
/ 29 мая 2020

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

...