关于http.post不能跳
About http.post cannot tigger
我在Angular写了一个简单的服务,但是里面没有触发
任何人都可以建议 :
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { User } from './user';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private signinuser = new BehaviorSubject<User>(null);
CurrentUser = this.signinuser.asObservable();
constructor(private http: HttpClient)
{}
signin (username : string, password :string)
{
console.log(`Get username : ${username} - 1`);
console.log(`Get password : ${password} - 2`);
this.http.post<any>(`http://localhost:4000`, {"userid": username, "UserPassword": password})
.pipe
(
tap( res => console.log('HTTP response here:', res)),
map
(
data=>this.signinuser.next(data)
),
tap(console.log)
)
this.signinuser.subscribe( getnewdata => { console.log(getnewdata) });
}
}
当我调用 this.AuthService.signin ('test', 'password')
来自其他组件
输出结果显示:
获取用户名:test - 1
获取用户名:密码 - 2
测试 Signuser 值:null
谢谢
您必须订阅您的 post-调用。
否则调用将不会执行,管道中的所有语句都不会被调用。见倒数第二行:
this.http.post<any>(`http://localhost:4000`, {"userid": username, "UserPassword": password})
.pipe
(
tap( res => console.log('HTTP response here:', res)),
map
(
data=>this.signinuser.next(data)
),
tap(console.log)
).subscribe();
this.signinuser.subscribe( getnewdata => { console.log(getnewdata) });
我在Angular写了一个简单的服务,但是里面没有触发 任何人都可以建议 :
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { User } from './user';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private signinuser = new BehaviorSubject<User>(null);
CurrentUser = this.signinuser.asObservable();
constructor(private http: HttpClient)
{}
signin (username : string, password :string)
{
console.log(`Get username : ${username} - 1`);
console.log(`Get password : ${password} - 2`);
this.http.post<any>(`http://localhost:4000`, {"userid": username, "UserPassword": password})
.pipe
(
tap( res => console.log('HTTP response here:', res)),
map
(
data=>this.signinuser.next(data)
),
tap(console.log)
)
this.signinuser.subscribe( getnewdata => { console.log(getnewdata) });
}
}
当我调用 this.AuthService.signin ('test', 'password') 来自其他组件
输出结果显示:
获取用户名:test - 1
获取用户名:密码 - 2
测试 Signuser 值:null
谢谢
您必须订阅您的 post-调用。
否则调用将不会执行,管道中的所有语句都不会被调用。见倒数第二行:this.http.post<any>(`http://localhost:4000`, {"userid": username, "UserPassword": password})
.pipe
(
tap( res => console.log('HTTP response here:', res)),
map
(
data=>this.signinuser.next(data)
),
tap(console.log)
).subscribe();
this.signinuser.subscribe( getnewdata => { console.log(getnewdata) });