Angular 如何在typescript中使用此关键字

Angular 如何在typescript中使用此关键字,angular,typescript,Angular,Typescript,我是typescript新手,请帮助我如何在authenticate函数中获得loginservice。我已经使用这个关键字来获取loginservice,但它不起作用。而且我对typescript中的这个关键字感到困惑 import { Constants } from '../../core/constants'; import { loginService } from './login.service'; import { Component, OnInit } from

我是typescript新手,请帮助我如何在authenticate函数中获得loginservice。我已经使用这个关键字来获取loginservice,但它不起作用。而且我对typescript中的这个关键字感到困惑

import { Constants } from '../../core/constants';
    import { loginService } from './login.service';
    import { Component, OnInit } from '@angular/core';
    import { FormsModule }   from '@angular/forms';

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

    export class LoginComponent implements OnInit {

      constructor(private loginservice: loginService) { }

      ngOnInit() {

      }

      login = {

        formData: {
          username: '',
          password: '',
        },

        resources:{
          login_logo: Constants.LOGO_LOGIN,
        },

        authenticate() {
          console.log("service called");
          let resultset = loginservice.authenticateUser(this.formData);

        }
      }
    }

差别不大

let resultset = loginservice...
应该是

let resultset = this.loginservice.

只需使用
this.
关键字引用类上的属性即可。构造函数中的参数也会自动成为类的属性。正如前面的回答所说,您只需执行
此操作。loginservice

实际上,这指的是当前上下文,在您的代码中,您已经在构造函数中导入了登录服务,因此它应该作为

authenticate() {
   console.log("service called");
  let resultset = this.loginservice.authenticateUser(this.formData);
}

在下面的场景中,
this
关键字引用LoginComponent(TypeScript文件)中的属性,例如loginService

export class LoginComponent implements OnInit {
  ... 

  constructor(private loginService: LoginService) { }

  ngOnInit() { }

  ...

  public authenticate(): void {
    let resultset = this.loginService.authenticateUser(this.formData);
    ...
  }
}

您的代码有几个基本问题。尝试此更新代码:

import { Constants } from '../../core/constants';
import { loginService } from './login.service';
import { Component, OnInit } from '@angular/core';
import { FormsModule }   from '@angular/forms';

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

export class LoginComponent implements OnInit {

  constructor(private loginservice: loginService, private CONSTANTS : Constants) { }

  ngOnInit() {

  }

  formData: any ={
     username: '',
     password: '',
  };

  resources: any = {
      login_logo: this.CONSTANTS.LOGO_LOGIN,
  };


  authenticate() {
      console.log("service called");
      let resultset = this.loginservice.authenticateUser(this.formData);

  }
}

你的问题实际上是两个问题,后者太宽泛了,无法用这种形式回答。话虽如此,知道
loginservice
已设置为
this
可能会对您有所帮助,因为您在构造函数调用中使用了
private
关键字。请注意,构造函数的参数只会自动变为属性,因为OP使用了
private
关键字。如果没有
private
,每个参数都必须在构造函数调用中设置为
this
。我也不知道,直到我忘记添加
private
,我无法理解为什么什么都不起作用。将所有内容分组到单个对象(登录)是错误的吗?我做错了吗?是的,你不能这样分组,尤其是你不能这样做