Невозможно вызвать атрибут, объявленный в конструкторе из метода класса - PullRequest
2 голосов
/ 11 июня 2019

У меня есть HomeController, у которого есть индекс метода. Я объявил переменную this.data в конструкторе. когда я вызываю this.data в методе index, я получаю сообщение об ошибке типа

TypeError: Невозможно прочитать свойство 'data' из неопределенного

Это HomeController:

import Controller from "./../../vendor/controller";
import * as express from "express";
import hException from "./../helper/exception.helper";

class HomeController extends Controller {
    data:object
    constructor(){
        super()
        this.data = {
            tes: 'tes'
        }
    }
    async index(request:express.Request, response:express.Response, next:express.NextFunction):Promise<any>{
        try {
            let template =  'home/index';
            //next to viewer
            response.render(template, { layout: 'dashboard', data: this.data});
        } catch (error) {
            next(new hException(error))
        }
    }
}

export default HomeController

Routes тот звонящий HomeController:

import * as express from "express";
import Controller from "./../../controller/home.controller";

import { Jwt as MJwt } from "./../../middleware/auth.middleware";

class Routes {
    private router:express.Router = express.Router()
    private path:string = '/'
    private controller:Controller
    private MJwt = new MJwt()
    constructor() {
        this.controller = new Controller;
        this.run()
    }

    public run(){
        this.router.route(this.path)
            .get(
                this.controller.index
            );
    }
}

export default Routes

1 Ответ

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

Эта проблема решена с помощью объявленного метода HomeController с arrow function ссылкой для подробностей.или с помощью функции привязки ссылка для получения подробной информации.

Решено с помощью функции стрелки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...