首页 > 解决方案 > 如何修复错误“this.accountService 未定义”

问题描述

我是 Angular 和 JHipster 的新手。请帮助解决问题。我没有更改那里的代码。有 jhipster 的默认登录代码。

堆栈跟踪:

TypeError:this.accountService 未定义堆栈跟踪:LoginService.prototype.logout@webpack-internal:///./src/main/webapp/app/core/login/login.service.ts:33:9 NavbarComponent.prototype。 logout@webpack-internal:///./src/main/webapp/app/layouts/navbar/navbar.component.ts:49:9 View_NavbarComponent_30/<@ng:///NgrkAppModule/NavbarComponent.ngfactory.js:1470 :23

核心/登录/login.service.ts:

import { AccountService } from 'app/core/auth/account.service';

--------------------------------------------------

constructor(private accountService: AccountService)

--------------------------------------------------

    login(credentials, callback?) {
        const cb = callback || function() {};

        return new Promise((resolve, reject) => {
            this.authServerProvider.login(credentials).subscribe(
                data => {
                    this.accountService.identity(true).then(account => {
                        resolve(data);
                    });
                    return cb();
                },
                err => {
                    this.logout();
                    reject(err);
                    return cb(err);
                }
            );
        });
    }


    logout() {
        this.authServerProvider.logout().subscribe();
        this.accountService.authenticate(null);
    }

核心/身份验证/account.service.ts:

export class AccountService {
--------------------------------

    authenticate() {
      some code;
    }

    identity() {
      some code;
    }

--------------------------------
}

标签: angulartypescriptloginjhipster

解决方案


如果处理不当,阅读this并发现它undefined是一个常见的问题。this

使固定

快速解决方法是使用箭头logout

logout = () => {

并且可能在其他地方(例如login)使用它以确保未来的安全。


推荐阅读