在多个组件中使用一个变量 Angular
Use a variable in many components Angular
我有这个功能来获取用户通过身份验证的时间,如果输入的数据有效,它会在登录按钮上显示 运行。我想在应用程序的许多不同组件中使用“this.time”来显示用户身份验证时间,但我不知道该怎么做,因为“this.time”的值不是静态的,有人可以帮我吗?我如何为其他组件获取该值?
public sec = 0;
public min = 0;
public hour = 0;
public time: string;
startStopWatch() {
this.time = "00:00:00";
setInterval(() => {
console.log(this.time)
this.sec++;
this.time = (this.hour + ':' + this.min + ':' + this.sec);
if (this.sec === 60) {
this.min++;
this.sec = 0;
if (this.min === 60) {
this.hour++;
this.min = 0;
}
}
}, 1000);
}
您可以让所有这些都可以通过服务访问,而且,由于看起来这一切都与身份验证有关,您可以制作一个不错的 AuthService。我提供了示例代码,它将提供您正在寻找的功能。
在 authService 中,@Injectable({ providedIn: "root" })
将使该服务具有全局范围,因此任何组件都可以访问。我提供了一个示例组件,向您展示了如何使用该 authService 并获取计时器信息。
希望对您有所帮助!
auth.service.ts
import { Injectable } from "@angular/core";
@Injectable({ providedIn: "root" })
export class AuthService {
private isAuth: boolean;
private sec = 0;
private min = 0;
private hour = 0;
private time: string;
constructor() {}
public login(){
/* authentication logic here
If authenticated, then this.startStopWatch()
*/
}
private startStopWatch() {
this.time = "00:00:00";
setInterval(() => {
console.log(this.time)
this.sec++;
this.time = (this.hour + ':' + this.min + ':' + this.sec);
if (this.sec === 60) {
this.min++;
this.sec = 0;
if (this.min === 60) {
this.hour++;
this.min = 0;
}
}
}, 1000);
}
public getTimer(){
return this.time;
}
}
示例组件
import { Component} from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class TestComponent{
constructor(private authService: AuthService) { }
testFunction(){
console.log(this.authService.getTimer())
}
}
我有这个功能来获取用户通过身份验证的时间,如果输入的数据有效,它会在登录按钮上显示 运行。我想在应用程序的许多不同组件中使用“this.time”来显示用户身份验证时间,但我不知道该怎么做,因为“this.time”的值不是静态的,有人可以帮我吗?我如何为其他组件获取该值?
public sec = 0;
public min = 0;
public hour = 0;
public time: string;
startStopWatch() {
this.time = "00:00:00";
setInterval(() => {
console.log(this.time)
this.sec++;
this.time = (this.hour + ':' + this.min + ':' + this.sec);
if (this.sec === 60) {
this.min++;
this.sec = 0;
if (this.min === 60) {
this.hour++;
this.min = 0;
}
}
}, 1000);
}
您可以让所有这些都可以通过服务访问,而且,由于看起来这一切都与身份验证有关,您可以制作一个不错的 AuthService。我提供了示例代码,它将提供您正在寻找的功能。
在 authService 中,@Injectable({ providedIn: "root" })
将使该服务具有全局范围,因此任何组件都可以访问。我提供了一个示例组件,向您展示了如何使用该 authService 并获取计时器信息。
希望对您有所帮助!
auth.service.ts
import { Injectable } from "@angular/core";
@Injectable({ providedIn: "root" })
export class AuthService {
private isAuth: boolean;
private sec = 0;
private min = 0;
private hour = 0;
private time: string;
constructor() {}
public login(){
/* authentication logic here
If authenticated, then this.startStopWatch()
*/
}
private startStopWatch() {
this.time = "00:00:00";
setInterval(() => {
console.log(this.time)
this.sec++;
this.time = (this.hour + ':' + this.min + ':' + this.sec);
if (this.sec === 60) {
this.min++;
this.sec = 0;
if (this.min === 60) {
this.hour++;
this.min = 0;
}
}
}, 1000);
}
public getTimer(){
return this.time;
}
}
示例组件
import { Component} from '@angular/core';
@Component({
selector: 'app-test',
templateUrl: './test.component.html',
styleUrls: ['./test.component.scss']
})
export class TestComponent{
constructor(private authService: AuthService) { }
testFunction(){
console.log(this.authService.getTimer())
}
}