【发布时间】:2018-11-26 15:46:42
【问题描述】:
Angular 返回一个错误:Error: Uncaught (in promise): TypeError: res.users.subscribe is not a function。
从今天早上开始,我不明白自己的决心出了什么问题。
用户服务.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class UsersService {
private api = 'http://localhost:3000/users';
private headers = new HttpHeaders();
constructor(
private http: HttpClient
) {}
getAllUsers(): Observable<any[]> {
return this.http.get<any[]>(this.api, {headers: this.headers, responseType: 'json' });
}
}
UserResolve.ts:
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { UsersService } from '../services/users.service';
@Injectable()
export class UsersResolve implements Resolve<any> {
constructor(private usersService: UsersService) {}
resolve() {
return this.usersService.getAllUsers();
}
}
用户组件.ts
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import {Users} from '../_shared/models/Users';
@Component({
selector: 'app-user',
templateUrl: './users.component.html',
styleUrls: ['./users.component.sass']
})
export class UsersComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
public title: string;
public users: Users[] = [];
ngOnInit() {
this.route.data.forEach((res: any): any => {
this.title = res.title;
res.users.subscribe(users => {
console.log(users);
this.users = users;
});
});
}
}
当我登录 res.users 时,它返回“function UsersResolve()”而不是 proto 订阅...
json 是对象数组,例如:
{
id: 13246,
guid: '46ffgd456dfs',
name: 'John Doe',
adress: ...
}
问题可能来自我的 json 的内容吗?
最初,我想训练 RxJS 操作符...
【问题讨论】:
-
您没有显示您的路线定义。您确定您确实注册了 UsersResolve?
-
app.routing const appRoutes: Routes = [ ... { path: 'users', component: UsersComponent, data: { title : 'Liste des Utilisateurs', users : UsersResolve } } ]; @NgModule({ ... providers: [UsersResolve, UserService] 我以为否则 Angular 会警告我。
-
啊,有一个错误:你将UsersResolve-class的引用分配给
data.users,它实际上不会以这种方式运行。请参阅 Pavan 的回答。 -
请点击对您最有帮助的答案左侧的复选标记来关闭您的问题
标签: angular observable httpclient subscribe