You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular2中无法创建新对象及使用export类问题求助

解决Angular中UserDetails未定义的ReferenceError问题

我来帮你排查这个报错的问题,主要是几个小细节的错误导致的:

问题根源分析

  1. 导入时的大小写不匹配:TypeScript是严格区分大小写的,你定义的类是UserDetails(首字母大写),但导入语句里写的是userDetails(首字母小写),这会导致Angular无法正确识别这个类。
  2. 创建对象时使用了错误的类名:你在login方法里写了new User(),但你根本没有定义过User类,应该使用你自己定义的UserDetails类。
  3. 额外的语法错误:return this.http.post(this.loginUserUrl,user);后面多了一个分号,这会打断链式调用,导致后续的.map操作报错。

修正后的完整代码

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
// 修正:导入正确的类名(首字母大写)
import { UserDetails } from './_models/index';
import 'rxjs/add/operator/map'

@Injectable()
export class AuthenticationService {
  private loginUserUrl="http://localhost:8082/TodoApp/login";
  
  constructor(private http: HttpClient) { }

  login(email: string, password: string) {
    console.log("in login service");
    // 修正:使用正确的类名创建实例
    let user = new UserDetails();
    user.email=email;
    user.password=password;
    // 修正:去掉post语句末尾的分号,保证链式调用正常
    return this.http.post(this.loginUserUrl,user)
      .map(user => {
        // login successful if there's a jwt token in the response
        if (user && user.token) {
          // store user details and jwt token in local storage to keep user logged in between page refreshes
          localStorage.setItem('currentUser', JSON.stringify(user));
        }
        return user;
      });
  }
}

额外验证步骤

请确认你的./_models/index.ts文件中确实正确导出了UserDetails类,比如:

// 假设UserDetails类定义在user-details.ts文件中
export { UserDetails } from './user-details';

// 或者直接在index.ts中定义类的情况
export class UserDetails { 
  name:string; 
  phoneNumber:string; 
  email:string; 
  password: string; 
}

内容的提问来源于stack exchange,提问作者Ragini Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:29