在 Angular 中获取 Observable 请求中的问题
Problem in request get Observable in Angular
我有问题。
我有这些服务和这个电话:
getUsers(): Observable<Users> {
this.spinner.show();
const options: Options = {
type: 'get',
path: '/users?page=2' ,
};
return this.apiCall.call(options).pipe(
map((res) => {
console.log('El servicio de usuarios funciona', res);
}),
finalize(() => {
this.spinner.hide();
}),
catchError((er) => this.apiCall.handleError(er))
);
}
这项服务在控制台中给我这个结果:
console object
所以它有效
但是在组件中我无法解析并获取该对象也能够获取我需要的该对象中的数组 'allUsers' array
export class DashboardComponent implements OnInit {
stateForm: Props = new Props();
user?: SocialUser;
socialUser!: SocialUser;
loggedIn: boolean;
users: Users;
allUsers: UserBody[];
constructor(
private router: Router,
private authService2: SocialAuthService,
private authService: AuthService,
) { }
ngOnInit(): void {
this.initForm();
}
/**
* initForm
* initialize the form
*/
initForm(): void {
this.authService2.authState.subscribe((user) => {
this.user = user;
this.loggedIn = (user != null);
});
if (!this.user) {
this.user = JSON.parse(localStorage.getItem('user'));
}
this.getUsers();
// console.log(this.getUsers());
// this.users.data?.forEach(user => {
// this.allUsers.push(user);
// }
// )
}
getUsers(): void {
this.authService
.getUsers()
.pipe(
first(),
tap({
next: (userData) => {
},
error: () => {
this.stateForm.error = 'Invalid Login';
},
})
)
.subscribe( );
}
allUsers Model是对象上的数据Json
json 是 https://reqres.in/api/users?page=2
所以我需要修复它,以便数组具有 'data' array
的数据
感谢大家^^
map((res) => {
console.log('El servicio de usuarios funciona', res);
})
因为你没有 return 语句,这隐含地 returning 未定义,所以你将可观察对象映射到仅发射 undefined
.
我会切换到 tap
,这样您就可以 运行 您的日志记录而无需更改通过管道的值。
tap((res) => {
console.log('El servicio de usuarios funciona', res);
})
或者,您可以保留 map
并添加 return res
,尽管 map
运行 的副作用并没有改变任何东西并不是真正的什么map
用于。
map((res) => {
console.log('El servicio de usuarios funciona', res);
return res;
})
我有问题。
我有这些服务和这个电话:
getUsers(): Observable<Users> {
this.spinner.show();
const options: Options = {
type: 'get',
path: '/users?page=2' ,
};
return this.apiCall.call(options).pipe(
map((res) => {
console.log('El servicio de usuarios funciona', res);
}),
finalize(() => {
this.spinner.hide();
}),
catchError((er) => this.apiCall.handleError(er))
);
}
这项服务在控制台中给我这个结果: console object
所以它有效
但是在组件中我无法解析并获取该对象也能够获取我需要的该对象中的数组 'allUsers' array
export class DashboardComponent implements OnInit {
stateForm: Props = new Props();
user?: SocialUser;
socialUser!: SocialUser;
loggedIn: boolean;
users: Users;
allUsers: UserBody[];
constructor(
private router: Router,
private authService2: SocialAuthService,
private authService: AuthService,
) { }
ngOnInit(): void {
this.initForm();
}
/**
* initForm
* initialize the form
*/
initForm(): void {
this.authService2.authState.subscribe((user) => {
this.user = user;
this.loggedIn = (user != null);
});
if (!this.user) {
this.user = JSON.parse(localStorage.getItem('user'));
}
this.getUsers();
// console.log(this.getUsers());
// this.users.data?.forEach(user => {
// this.allUsers.push(user);
// }
// )
}
getUsers(): void {
this.authService
.getUsers()
.pipe(
first(),
tap({
next: (userData) => {
},
error: () => {
this.stateForm.error = 'Invalid Login';
},
})
)
.subscribe( );
}
allUsers Model是对象上的数据Json json 是 https://reqres.in/api/users?page=2 所以我需要修复它,以便数组具有 'data' array
的数据感谢大家^^
map((res) => {
console.log('El servicio de usuarios funciona', res);
})
因为你没有 return 语句,这隐含地 returning 未定义,所以你将可观察对象映射到仅发射 undefined
.
我会切换到 tap
,这样您就可以 运行 您的日志记录而无需更改通过管道的值。
tap((res) => {
console.log('El servicio de usuarios funciona', res);
})
或者,您可以保留 map
并添加 return res
,尽管 map
运行 的副作用并没有改变任何东西并不是真正的什么map
用于。
map((res) => {
console.log('El servicio de usuarios funciona', res);
return res;
})