为什么Angular 6不发送HTTP Get / Post请求?

时间:2018-08-05 07:45:07

标签: angular typescript httpclient angular6

我在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();
    }
}

为什么不发送我的请求?

Developer Network

4 个答案:

答案 0 :(得分:3)

订阅您的电话之前,不会呼叫

ObservableHttp 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();
 }
}