【发布时间】:2021-07-21 13:01:06
【问题描述】:
我在 google 和 StackOverflow 中搜索了有关此错误的信息,但我无法修复此错误,谁能帮助我。
这是我的 auth-service.ts 文件:
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { LoginService } from './login.service';
import { User } from '../interfaces/Ilogin';
@Injectable({
providedIn: 'root'
})
export class AuthService implements CanActivate {
user:User;
constructor(public loginService: LoginService, public router: Router) {}
canActivate(): boolean {
this.loginService.loggedIn.subscribe(next => {
this.user = next;
});
if (this.user) {
return true;
}
this.router.navigate(['home']);
return false;
}
}
这是我的 login.component.ts 文件:
import { Component, OnInit, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { LoginService } from '../services/login.service';
import { FormBuilder, FormGroup } from '@angular/forms';
import { Router } from '@angular/router';
import { User } from '../interfaces/Ilogin';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
loginForm: FormGroup;
user = {} as User;
constructor(
public dialogRef: MatDialogRef<LoginComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
private loginService: LoginService,
private fb: FormBuilder,
private router: Router) {}
ngOnInit() {
this.loginForm = this.fb.group({
mobileNumber: [''],
password: ['']
})
}
login(){
if (this.loginForm.valid){
this.user.mobileNumber = this.loginForm.value.mobileNumber;
this.loginService.loggedIn.next(this.user);
this.onNoClick();
}
}
onNoClick(): void {
this.dialogRef.close();
}
}
这是我的Ilogin.ts界面文件:
export interface User {
mobileNumber: string;
}
这是我的 login.service.ts 文件:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { User } from '../interfaces/Ilogin';
@Injectable({
providedIn: 'root'
})
export class LoginService {
user: User;
loggedIn = new BehaviorSubject(this.user);
constructor() { }
isLoggedIn(): boolean {
console.log(this.loggedIn);
return true;
}
}
我收到的错误消息:
src/app/services/login.service.ts:10:39 - 错误 TS2729:属性 'user' 在其初始化之前使用。
loggedIn = new BehaviorSubject(this.user); ~~~~
src/app/services/login.service.ts:9:3 用户:用户; ~~~~ 这里声明了“用户”。
【问题讨论】:
标签: angular typescript