如何在angular4中在同一类中声明的服务响应中访问变量?

时间:2017-07-18 04:59:58

标签: angular angular-cli

import {Component, OnInit} from '@angular/core';
import {LoginService} from "../../services/login.service";
import {LoginUser} from "../../services/model";

@Component({
selector: 'login-component',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})

export class LoginComponent implements OnInit {
private user: LoginUser = new LoginUser();
public flag : boolean = false;
constructor(private loginService: LoginService) {}

login(): void {
  this.flag = true;
  this.loginService.login(this.user).then(function (response) {
  console.log(this.flag);
  });
 }
}

我无法在登录服务调用的响应中访问或为flag变量赋值。但是,我可以在登录方法中访问它,我将其值更新为true。 我在登录服务中也遇到了同样的问题。

2 个答案:

答案 0 :(得分:1)

Angular使用Typescript,默认情况下,其中包含大部分ES6功能。如果要将函数作为回调参数传递,请不要使用function(){}

使用fat arrow notation为您提供词汇this

login(): void {
    this.flag = true;
    this.loginService.login(this.user).then((response) => {
        console.log(this.flag);
    });
}

答案 1 :(得分:0)

绑定(这个)可能会帮助你解决问题。

if foo {
    cell.textLabel.text = "isFoo"
} else {
    cell.textLabel.text = "isNotFoo"
}