gpt4 book ai didi

angular - 如何在 Angular 中创建 Getter Setter

转载 作者:行者123 更新时间:2023-12-02 18:36:44 25 4
gpt4 key购买 nike

我正在使用 Angular 7。我想在 typescript 中获取和设置变量

我的代码login.service.ts

import { Injectable } from '@angular/core';

@Injectable({
providedIn: 'root'
})
export class LoginService {
public username:string;
public token:string;
public fullname:string;
constructor() { }
set setUser(val: string){
this.username = val;
}
set setToken(val:string){
this.token=val;
}
set setFullName(val:string){
this.fullname=val;
}
get getUser():string{
return this.username;
}
get getToken():string{
return this.token;
}
get getFullName():string{
return this.fullname;
}
}

以及我在 Login.Component.ts 中的代码

fLogin(user, pass) {
this.users.setUser=user;
}

以及我在 Customer.Component.ts 中的代码

import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Http, Headers } from "@angular/http";
import {LoginService} from "../login.service"
import { NgLocalization } from '@angular/common';
@Component({
selector: 'app-customers',
templateUrl: './customers.component.html',
styleUrls: ['./customers.component.css']
})
export class CustomersComponent implements OnInit {
constructor(public user:LoginService) {

}
loadData() {
console.log(this.user.getUser)
}
ngOnInit() {
this.loadData();
}
}

I expect Set Value In Login.Component.ts And Get Value in Customer.Component.ts

How to it working or the other it working?

最佳答案

1) 确保您的 login.component.ts 文件也注入(inject)该服务。

constructor(public user:LoginService)

2) 确保没有模块或组件具有包含您的服务的 providers 数组。

如果您使用 providedIn: 'root' 注册服务,并且不要在任何providers中再次注册该服务> 数组,那么该服务应该是单例并按您的预期工作。

此外,您的 getter 和 setter 的命名不正确。 getter 和 setter 应该具有相同名称,因为它们只是定义属性的另一种方式:

  get user():string{
return this.username;
}
set user(val: string){
this.username = val;
}
get token():string{
return this.token;
}
set token(val:string){
this.token=val;
}
get fullName():string{
return this.fullname;
}
set fullName(val:string){
this.fullname=val;
}

然后,您可以像访问任何其他声明的属性一样访问这些 getter/setter 属性。

 this.fullName = "Joe Smith"; // to set the value and call the setter

console.log(this.fullName); // to reference the value.

在您的客户组件中:

  constructor(public loginService:LoginService) {

}
loadData() {
console.log(this.loginService.user)
}

注意:我重命名了您的构造函数参数以更好地识别它。

在您的登录组件中:

  constructor(public loginService:LoginService) {

}

fLogin(user, pass) {
this.loginService.user = user;
}

关于angular - 如何在 Angular 中创建 Getter Setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54682011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com