我在Angular 6中具有以下服务:
@Injectable()
export class LoginService {
constructor(private http: HttpClient) { }
login(): Observable<boolean> {
var url = `${environment.baseAPIUrl}${environment.loginUrl}`;
return this.http.get<boolean>(url);
}
}
我从组件中调用它:
@Component({
selector: 'bpms-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor(private loginService: LoginService) { }
ngOnInit() {
}
login() {
var self = this;
self.loginService.login();
}
}
为什么不发送我的请求?
答案 0 :(得分:3)
Observable
。 Http
API方法返回Observable
,仅通过调用observable就不会进行和API调用。
self.loginService.login().subscribe(
(data) => console.log('Logged in successfully')
);
答案 1 :(得分:2)
在订阅返回可观察到的内容之前,不会进行Http调用。
@Component({
selector: 'bpms-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor(private loginService: LoginService) { }
ngOnInit() {
}
login() {
var self = this;
self.loginService.login().subscribe();
}
}
答案 2 :(得分:1)
您应该调用您的login()
函数,例如在ngOnInit()
或表单提交事件中,请确保调用它。
并更新您的login()
函数,如下所示:
login() {
this.loginService.login()
.subscribe((res) => console.log('login() response!'));
}
答案 3 :(得分:1)
如果您的返回类型是Observable <>,则需要订阅它,以便在准备就绪后获得响应。因此,您的代码将是这样的
@Component({
selector: 'bpms-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor(private loginService: LoginService) { }
ngOnInit() {
}
login() {
var self = this;
self.loginService.login().subscribe();
}
}