Angular2中无法创建新对象及使用export类问题求助
解决Angular中
UserDetails未定义的ReferenceError问题 我来帮你排查这个报错的问题,主要是几个小细节的错误导致的:
问题根源分析
- 导入时的大小写不匹配:TypeScript是严格区分大小写的,你定义的类是
UserDetails(首字母大写),但导入语句里写的是userDetails(首字母小写),这会导致Angular无法正确识别这个类。 - 创建对象时使用了错误的类名:你在
login方法里写了new User(),但你根本没有定义过User类,应该使用你自己定义的UserDetails类。 - 额外的语法错误:
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
相关产品推荐
相关产品推荐

