我有一个类型为“ user”的对象,该对象应具有一个功能“ getPermission()”。在(Angular 7的)运行时期间,它将引发错误“ TypeError:this.user.getPermission不是函数”。
在这里,我认为最基本的上下文是:
我的用户类别:
export class User {
...
public getPermission(): boolean {
return true;
}
...
}
我有一项服务,可以从api(asp.net核心)中获取用户:
getUser(id): Observable<User> {
return this.http.get<User>(this.baseurl + 'user/' + id);
}
然后我有一个解析器:
@Injectable()
export class UserEditResolver implements Resolve<User> {
constructor(private userService: UserService, private authService: AuthService,
private router: Router,
private alertify: AlertifyService) {}
resolve(route: ActivatedRouteSnapshot): Observable<User> {
return this.userService.getUser(this.authService.decodedToken.nameid).pipe(
catchError(error => {
this.alertify.error('Problem retrieving your data');
this.router.navigate(['/users']);
return of(null);
})
);
}
}
最后在我的组件中,我调用函数getPermission:
user: User;
ngOnInit() {
this.route.data.subscribe(data => {
this.user = data['user'];
});
const t: boolean = this.user.getPermission();
}
如上所述,我得到了错误:
TypeError: this.user.getPermission is not a function
除了函数和运行时不存在的所有其他函数之外,还包含从api加载的所有属性。
如果能成功实现这一目标,我将非常感激!
答案 0 :(得分:3)
TypeScript仅在编译时存在。它在运行时不执行任何操作。
仅执行this.http.get<User>(...)
不会将您收到的任何内容转换为您指定的类User
。
您需要自己解析输入并实例化User
实例。
答案 1 :(得分:0)
创建该类的实例
user: User = new User();