Angular 7.を使用しています。TypeScriptで変数を取得および設定したい
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;
}
}
fLogin(user, pass) {
this.users.setUser=user;
}
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();
}
}
私はLogin.Component.tsに値を設定し、そしてCustomer.Component.tsに値を取得することを期待しています
それがどのように機能するか、または他のそれは機能しますか?
1)login.component.tsファイルもサービスを注入することを確認します。
constructor(public user:LoginService)
2)モジュールまたはコンポーネントに、サービスを含むproviders
配列がないことを確認します。
providedIn: 'root'
を使用してサービスを登録し、しないでくださいproviders
にもう一度サービスを登録します配列の場合、サービスはシングルトンであり、期待どおりに機能する必要があります。
また、ゲッターとセッターの名前が正しくありません。 getterとsetterは、プロパティを定義するもう1つの方法であるため、sameの名前を持つ必要があります。
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;
}
次に、他の宣言されたプロパティと同じように、これらのゲッター/セッタープロパティにアクセスします。
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;
}
同じ機能が2つあれば十分です。1つは接頭辞セット、もう1つは接頭辞getです。
****in the Service User
private name: string;
public get info() {
return name;
}
public set info(val) {
this.name = val;
}
************ usage in other components or services
this.User.info = 'your name'; // for set
const yourName = this.User.info; // for get