我有一个返回用户对象的角度服务。用户对象有自己的属性和一组墙。服务向调用组件返回一个可观察的。在该服务中,我能够从http服务返回的json创建用户对象。但是,当我订阅组件中的服务时,返回的对象为null。我做错了什么?
// user.ts
import { wall } from './wall';
export class user {
Id: number;
EntryType: number;
UserType: number;
SubscriptionType: number;
IsCoach: boolean;
Username: string;
Email: string;
Name: string;
Password: string;
Created: string;
MemberWalls: wall[];
}
//wall.ts
export class wall {
Title: string;
ViewItem_Id: number;
}
//authentication.service.ts
authenticate(authRequest: login): Observable<user> {
let url: string = this.apiUrl + AppSettings.LOGIN_SERVICE;
let headers = new Headers({
'Content-Type': AppSettings.CONTENT_TYPE_HEADER, //'; charset=utf-8',
'client-secret': AppSettings.CLIENT_SECRET,
'client-id': AppSettings.CLIENT_ID
});
let options = new RequestOptions({ headers: headers });
return this._http.post(url, authRequest, options) //
.map(data => {
this.authenticated(data);
})
.catch(this.handleError);
}
private authenticated(res: Response) {
let body = res.json();
if (body.StatusCode === 200) {
localStorage.setItem('auth_token', res.headers.get("access-token"));
let user1: user = body.Data;
//The user object is fine here.
//That means that the json and the user class structure match perfectly
console.log(user1);
return body.Data || {};
}
else {
return {};
}
}
//login.component.ts
login() {
this.errorMessage = '';
this.currentUser = null;
this._authService.authenticate(this.loginModel)
.subscribe(user1 => this.currentUser = user1,
error => this.handleError( error));
//The user1 returned by the service is always null.
}
接受冈特的回答:
user1=
映射post请求的结果时缺少return语句。
在es6和ts中:
前任:
let f = (data) => this.authenticated(data);;
// Or
let f = (data) => { return this.authenticated(data); };
我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块
我对可观察量很陌生。如何仅从一个简单的字符串创建可观察的?然后订阅它并在它发生变化时输出它。 这有意义吗? 我在谷歌搜索上一点运气都没有。可能是错误的关键字? 添加一些代码以更好地解释: 我想我在这里做错了什么?但不知道怎么问。我将不胜感激的任何解释。
我试图显示一个对象数组,多个函数将不得不改变它。所以我试着让它成为可观察的(也许我错了)。 打字版本:2.7.2 rxjs:6.2.1角cli:6.0.8节点:8.11.3角:6.0.7 我的服务(IsolementService)中有一个变量声明为: 我的服务主要有两种方法 接口: 我的服务是呼叫组件: 但是当我编译时,我有一个错误TS2495:类型“Observable”不是数组或字符串类型。
我面临的问题是我需要一个身份验证令牌来创建我的Retrofit服务。我目前使用可观察来获取所述令牌,导致一个相当丑陋的可观察构造: 我忍不住觉得这不是应该做的。我说得对吗?
我正在尝试使用http.get从服务器检索json文件,并从组件订阅可观察的内容。但是,它返回的是一个错误,而不是数据。 你能告诉我哪里出了问题吗: 下面是组件: 我正在使用Angular和rxjs库的最新版本。 请帮忙。
我正在努力理解如何合并两个可观察对象并利用它们合并后的产品。我在mergeMap、switchMap、flatMap、大理石图等上看了无数视频,但我仍然不知道合并观测值是如何工作的。我觉得在使用RxJS的时候,我不会有效率,甚至不会正确。 我有一个要订阅的可观测值,我还想订阅代码中特定表单数组的valueChanges可观测值。但是,我需要确保只有在正确构建表单数组之后才能进行第二次订阅,否则将出